Graphviz 13.1.2~dev.20250726.0945
Loading...
Searching...
No Matches
matrix_ops.h
Go to the documentation of this file.
1/*************************************************************************
2 * Copyright (c) 2011 AT&T Intellectual Property
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * https://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors: Details at https://graphviz.org
9 *************************************************************************/
10
11#pragma once
12
13#include <stdbool.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
20
21#if !defined(__CYGWIN__) && defined(__GNUC__) && !defined(__MINGW32__)
22#define INTERNAL __attribute__((visibility("hidden")))
23#else
24#define INTERNAL /* nothing */
25#endif
26
27INTERNAL void scadd(double *, int, double, double *);
28INTERNAL double norm(double *, int);
29
30INTERNAL void orthog1(int n, double *vec);
31INTERNAL void init_vec_orth1(int n, double *vec);
32INTERNAL void right_mult_with_vector(vtx_data *, int, double *,
33 double *);
34INTERNAL void right_mult_with_vector_f(float **, int, double *,
35 double *);
36INTERNAL void vectors_subtraction(int, double *, double *, double *);
37INTERNAL void vectors_addition(int, double *, double *, double *);
38INTERNAL void vectors_scalar_mult(int, const double *, double, double *);
39INTERNAL void copy_vector(int n, const double *source, double *dest);
40INTERNAL double vectors_inner_product(int n, const double *vector1,
41 const double *vector2);
42INTERNAL double max_abs(int n, double *vector);
43
44 /* sparse matrix extensions: */
45
47 (double **, int, int, double *, double *);
48INTERNAL void right_mult_with_vector_d(double **, int, int, double *,
49 double *);
50INTERNAL void mult_dense_mat(double **, float **, int, int, int,
51 float ***C);
52INTERNAL void mult_dense_mat_d(double **, float **, int, int, int,
53 double ***CC);
55 int, float ***);
56INTERNAL bool power_iteration(double **, int, int, double **, double *);
57
58
59/*****************************
60** Single precision (float) **
61** version **
62*****************************/
63
64INTERNAL void orthog1f(int n, float *vec);
65INTERNAL void right_mult_with_vector_ff(float *, int, float *, float *);
66INTERNAL void vectors_subtractionf(int, float *, float *, float *);
67INTERNAL void vectors_additionf(int n, float *vector1, float *vector2,
68 float *result);
69INTERNAL void vectors_mult_additionf(int n, float *vector1, float alpha,
70 float *vector2);
71INTERNAL void copy_vectorf(int n, float *source, float *dest);
72INTERNAL double vectors_inner_productf(int n, float *vector1,
73 float *vector2);
74INTERNAL void set_vector_val(int n, double val, double *result);
75INTERNAL void set_vector_valf(int n, float val, float * result);
76INTERNAL double max_absf(int n, float *vector);
77INTERNAL void square_vec(int n, float *vec);
78INTERNAL void invert_vec(int n, float *vec);
79INTERNAL void sqrt_vecf(int n, float *source, float *target);
80INTERNAL void invert_sqrt_vec(int n, float *vec);
81
82#undef INTERNAL
83
84#ifdef __cplusplus
85}
86#endif
#define CC
Definition gc.c:45
#define INTERNAL
Definition matrix_ops.h:24
INTERNAL void vectors_subtractionf(int, float *, float *, float *)
Definition matrix_ops.c:433
INTERNAL void mult_sparse_dense_mat_transpose(vtx_data *, double **, int, int, float ***)
Definition matrix_ops.c:188
INTERNAL void right_mult_with_vector_d(double **, int, int, double *, double *)
Definition matrix_ops.c:368
INTERNAL void vectors_additionf(int n, float *vector1, float *vector2, float *result)
Definition matrix_ops.c:442
INTERNAL bool power_iteration(double **, int, int, double **, double *)
Definition matrix_ops.c:20
INTERNAL double vectors_inner_product(int n, const double *vector1, const double *vector2)
Definition matrix_ops.c:328
INTERNAL double max_abs(int n, double *vector)
Definition matrix_ops.c:339
INTERNAL void square_vec(int n, float *vec)
Definition matrix_ops.c:501
INTERNAL void vectors_addition(int, double *, double *, double *)
Definition matrix_ops.c:306
INTERNAL void set_vector_valf(int n, float val, float *result)
Definition matrix_ops.c:484
INTERNAL void vectors_scalar_mult(int, const double *, double, double *)
Definition matrix_ops.c:314
INTERNAL void mult_dense_mat(double **, float **, int, int, int, float ***C)
Definition matrix_ops.c:133
INTERNAL double vectors_inner_productf(int n, float *vector1, float *vector2)
Definition matrix_ops.c:466
INTERNAL double max_absf(int n, float *vector)
Definition matrix_ops.c:491
INTERNAL void copy_vector(int n, const double *source, double *dest)
Definition matrix_ops.c:322
INTERNAL void vectors_mult_additionf(int n, float *vector1, float alpha, float *vector2)
Definition matrix_ops.c:451
INTERNAL void vectors_subtraction(int, double *, double *, double *)
Definition matrix_ops.c:296
INTERNAL void right_mult_with_vector_f(float **, int, double *, double *)
Definition matrix_ops.c:281
INTERNAL void init_vec_orth1(int n, double *vec)
Definition matrix_ops.c:254
INTERNAL void sqrt_vecf(int n, float *source, float *target)
Definition matrix_ops.c:519
INTERNAL void set_vector_val(int n, double val, double *result)
Definition matrix_ops.c:477
INTERNAL void copy_vectorf(int n, float *source, float *dest)
Definition matrix_ops.c:459
INTERNAL double norm(double *, int)
Definition matrix_ops.c:229
INTERNAL void mult_dense_mat_d(double **, float **, int, int, int, double ***CC)
Definition matrix_ops.c:160
INTERNAL void invert_vec(int n, float *vec)
Definition matrix_ops.c:509
INTERNAL void right_mult_with_vector_transpose(double **, int, int, double *, double *)
Definition matrix_ops.c:350
INTERNAL void right_mult_with_vector(vtx_data *, int, double *, double *)
Definition matrix_ops.c:266
INTERNAL void orthog1f(int n, float *vec)
Definition matrix_ops.c:390
INTERNAL void right_mult_with_vector_ff(float *, int, float *, float *)
Definition matrix_ops.c:409
INTERNAL void scadd(double *, int, double, double *)
Definition matrix_ops.c:220
INTERNAL void orthog1(int n, double *vec)
Definition matrix_ops.c:233
INTERNAL void invert_sqrt_vec(int n, float *vec)
Definition matrix_ops.c:529
#define C
Definition pack.c:30
#define alpha
Definition shapes.c:4058