Graphviz 14.0.3~dev.20251115.1151
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#include <util/api.h>
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
21
22PRIVATE void scadd(double *, int, double, double *);
23PRIVATE double norm(double *, int);
24
25PRIVATE void orthog1(int n, double *vec);
26PRIVATE void init_vec_orth1(int n, double *vec);
27PRIVATE void right_mult_with_vector(vtx_data *, int, double *,
28 double *);
29PRIVATE void right_mult_with_vector_f(float **, int, double *,
30 double *);
31PRIVATE void vectors_subtraction(int, double *, double *, double *);
32PRIVATE void vectors_addition(int, double *, double *, double *);
33PRIVATE void vectors_scalar_mult(int, const double *, double, double *);
34PRIVATE void copy_vector(int n, const double *restrict source,
35 double *restrict dest);
36PRIVATE double vectors_inner_product(int n, const double *vector1,
37 const double *vector2);
38PRIVATE double max_abs(int n, double *vector);
39
40 /* sparse matrix extensions: */
41
43 (double **, int, int, double *, double *);
44PRIVATE void right_mult_with_vector_d(double *const *, int, int, double *,
45 double *);
46PRIVATE void mult_dense_mat(double **, float **, int, int, int,
47 float ***C);
48PRIVATE void mult_dense_mat_d(double **, float **, int, int, int,
49 double ***CC);
51 int, float ***);
52PRIVATE bool power_iteration(double *const *, int, int, double **);
53
54/*****************************
55** Single precision (float) **
56** version **
57*****************************/
58
59PRIVATE void orthog1f(int n, float *vec);
60PRIVATE void right_mult_with_vector_ff(float *, int, float *, float *);
61PRIVATE void vectors_subtractionf(int, float *, float *, float *);
62PRIVATE void vectors_additionf(int n, float *vector1, float *vector2,
63 float *result);
64PRIVATE void vectors_mult_additionf(int n, float *vector1, float alpha,
65 float *vector2);
66PRIVATE void copy_vectorf(int n, float *source, float *dest);
67PRIVATE double vectors_inner_productf(int n, float *vector1,
68 float *vector2);
69PRIVATE void set_vector_val(int n, double val, double *result);
70PRIVATE void set_vector_valf(int n, float val, float * result);
71PRIVATE double max_absf(int n, float *vector);
72PRIVATE void square_vec(int n, float *vec);
73PRIVATE void invert_vec(int n, float *vec);
74PRIVATE void sqrt_vecf(int n, float *source, float *target);
75PRIVATE void invert_sqrt_vec(int n, float *vec);
76
77#ifdef __cplusplus
78}
79#endif
macro for API hiding/exposing
#define PRIVATE
Definition api.h:16
#define CC
Definition gc.c:45
PRIVATE void copy_vector(int n, const double *restrict source, double *restrict dest)
Definition matrix_ops.c:316
PRIVATE void right_mult_with_vector(vtx_data *, int, double *, double *)
Definition matrix_ops.c:260
PRIVATE void sqrt_vecf(int n, float *source, float *target)
Definition matrix_ops.c:510
PRIVATE void invert_sqrt_vec(int n, float *vec)
Definition matrix_ops.c:520
PRIVATE void scadd(double *, int, double, double *)
Definition matrix_ops.c:214
PRIVATE void vectors_subtraction(int, double *, double *, double *)
Definition matrix_ops.c:290
PRIVATE void square_vec(int n, float *vec)
Definition matrix_ops.c:492
PRIVATE double vectors_inner_product(int n, const double *vector1, const double *vector2)
Definition matrix_ops.c:322
PRIVATE void right_mult_with_vector_ff(float *, int, float *, float *)
Definition matrix_ops.c:400
PRIVATE void vectors_scalar_mult(int, const double *, double, double *)
Definition matrix_ops.c:308
PRIVATE void mult_sparse_dense_mat_transpose(vtx_data *, double **, int, int, float ***)
Definition matrix_ops.c:182
PRIVATE void right_mult_with_vector_d(double *const *, int, int, double *, double *)
Definition matrix_ops.c:361
PRIVATE double vectors_inner_productf(int n, float *vector1, float *vector2)
Definition matrix_ops.c:457
PRIVATE double max_absf(int n, float *vector)
Definition matrix_ops.c:482
PRIVATE void set_vector_valf(int n, float val, float *result)
Definition matrix_ops.c:475
PRIVATE void mult_dense_mat(double **, float **, int, int, int, float ***C)
Definition matrix_ops.c:129
PRIVATE void vectors_additionf(int n, float *vector1, float *vector2, float *result)
Definition matrix_ops.c:433
PRIVATE void vectors_addition(int, double *, double *, double *)
Definition matrix_ops.c:300
PRIVATE bool power_iteration(double *const *, int, int, double **)
Definition matrix_ops.c:20
PRIVATE void vectors_subtractionf(int, float *, float *, float *)
Definition matrix_ops.c:424
PRIVATE void invert_vec(int n, float *vec)
Definition matrix_ops.c:500
PRIVATE double max_abs(int n, double *vector)
Definition matrix_ops.c:333
PRIVATE void copy_vectorf(int n, float *source, float *dest)
Definition matrix_ops.c:450
PRIVATE void orthog1(int n, double *vec)
Definition matrix_ops.c:227
PRIVATE void set_vector_val(int n, double val, double *result)
Definition matrix_ops.c:468
PRIVATE void init_vec_orth1(int n, double *vec)
Definition matrix_ops.c:248
PRIVATE double norm(double *, int)
Definition matrix_ops.c:223
PRIVATE void vectors_mult_additionf(int n, float *vector1, float alpha, float *vector2)
Definition matrix_ops.c:442
PRIVATE void right_mult_with_vector_transpose(double **, int, int, double *, double *)
Definition matrix_ops.c:344
PRIVATE void right_mult_with_vector_f(float **, int, double *, double *)
Definition matrix_ops.c:275
PRIVATE void mult_dense_mat_d(double **, float **, int, int, int, double ***CC)
Definition matrix_ops.c:154
PRIVATE void orthog1f(int n, float *vec)
Definition matrix_ops.c:381
#define C
Definition pack.c:30
#define alpha
Definition shapes.c:4056