Graphviz 14.0.2~dev.20251008.0253
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 **, 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 **, int, int, double **, double *);
53
54
55/*****************************
56** Single precision (float) **
57** version **
58*****************************/
59
60PRIVATE void orthog1f(int n, float *vec);
61PRIVATE void right_mult_with_vector_ff(float *, int, float *, float *);
62PRIVATE void vectors_subtractionf(int, float *, float *, float *);
63PRIVATE void vectors_additionf(int n, float *vector1, float *vector2,
64 float *result);
65PRIVATE void vectors_mult_additionf(int n, float *vector1, float alpha,
66 float *vector2);
67PRIVATE void copy_vectorf(int n, float *source, float *dest);
68PRIVATE double vectors_inner_productf(int n, float *vector1,
69 float *vector2);
70PRIVATE void set_vector_val(int n, double val, double *result);
71PRIVATE void set_vector_valf(int n, float val, float * result);
72PRIVATE double max_absf(int n, float *vector);
73PRIVATE void square_vec(int n, float *vec);
74PRIVATE void invert_vec(int n, float *vec);
75PRIVATE void sqrt_vecf(int n, float *source, float *target);
76PRIVATE void invert_sqrt_vec(int n, float *vec);
77
78#ifdef __cplusplus
79}
80#endif
macro for API hiding/exposing
#define PRIVATE
Definition api.h:16
#define CC
Definition gc.c:45
PRIVATE void right_mult_with_vector_d(double **, int, int, double *, double *)
Definition matrix_ops.c:368
PRIVATE void copy_vector(int n, const double *restrict source, double *restrict dest)
Definition matrix_ops.c:322
PRIVATE void right_mult_with_vector(vtx_data *, int, double *, double *)
Definition matrix_ops.c:266
PRIVATE void sqrt_vecf(int n, float *source, float *target)
Definition matrix_ops.c:519
PRIVATE void invert_sqrt_vec(int n, float *vec)
Definition matrix_ops.c:529
PRIVATE bool power_iteration(double **, int, int, double **, double *)
Definition matrix_ops.c:20
PRIVATE void scadd(double *, int, double, double *)
Definition matrix_ops.c:220
PRIVATE void vectors_subtraction(int, double *, double *, double *)
Definition matrix_ops.c:296
PRIVATE void square_vec(int n, float *vec)
Definition matrix_ops.c:501
PRIVATE double vectors_inner_product(int n, const double *vector1, const double *vector2)
Definition matrix_ops.c:328
PRIVATE void right_mult_with_vector_ff(float *, int, float *, float *)
Definition matrix_ops.c:409
PRIVATE void vectors_scalar_mult(int, const double *, double, double *)
Definition matrix_ops.c:314
PRIVATE void mult_sparse_dense_mat_transpose(vtx_data *, double **, int, int, float ***)
Definition matrix_ops.c:188
PRIVATE double vectors_inner_productf(int n, float *vector1, float *vector2)
Definition matrix_ops.c:466
PRIVATE double max_absf(int n, float *vector)
Definition matrix_ops.c:491
PRIVATE void set_vector_valf(int n, float val, float *result)
Definition matrix_ops.c:484
PRIVATE void mult_dense_mat(double **, float **, int, int, int, float ***C)
Definition matrix_ops.c:133
PRIVATE void vectors_additionf(int n, float *vector1, float *vector2, float *result)
Definition matrix_ops.c:442
PRIVATE void vectors_addition(int, double *, double *, double *)
Definition matrix_ops.c:306
PRIVATE void vectors_subtractionf(int, float *, float *, float *)
Definition matrix_ops.c:433
PRIVATE void invert_vec(int n, float *vec)
Definition matrix_ops.c:509
PRIVATE double max_abs(int n, double *vector)
Definition matrix_ops.c:339
PRIVATE void copy_vectorf(int n, float *source, float *dest)
Definition matrix_ops.c:459
PRIVATE void orthog1(int n, double *vec)
Definition matrix_ops.c:233
PRIVATE void set_vector_val(int n, double val, double *result)
Definition matrix_ops.c:477
PRIVATE void init_vec_orth1(int n, double *vec)
Definition matrix_ops.c:254
PRIVATE double norm(double *, int)
Definition matrix_ops.c:229
PRIVATE void vectors_mult_additionf(int n, float *vector1, float alpha, float *vector2)
Definition matrix_ops.c:451
PRIVATE void right_mult_with_vector_transpose(double **, int, int, double *, double *)
Definition matrix_ops.c:350
PRIVATE void right_mult_with_vector_f(float **, int, double *, double *)
Definition matrix_ops.c:281
PRIVATE void mult_dense_mat_d(double **, float **, int, int, int, double ***CC)
Definition matrix_ops.c:160
PRIVATE void orthog1f(int n, float *vec)
Definition matrix_ops.c:390
#define C
Definition pack.c:30
#define alpha
Definition shapes.c:4056