Graphviz 16.1.1~dev.20260926.2046
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 v2.0
5 * which accompanies this distribution, and is available at
6 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.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(const vtx_data *, int, const double *,
28 double *restrict);
29PRIVATE void vectors_subtraction(int, double *, double *, double *);
30PRIVATE void vectors_addition(int, double *, double *, double *);
31PRIVATE void vectors_scalar_mult(int, const double *, double, double *);
32PRIVATE void copy_vector(int n, const double *restrict source,
33 double *restrict dest);
34PRIVATE double vectors_inner_product(int n, const double *vector1,
35 const double *vector2);
36PRIVATE double max_abs(int n, double *vector);
37
38/* sparse matrix extensions: */
39
40PRIVATE void right_mult_with_vector_transpose(double **, int, int, double *,
41 double *);
42PRIVATE void right_mult_with_vector_d(double *const *, int, int, const double *,
43 double *restrict);
44PRIVATE void mult_dense_mat_d(double **, float **, int, int, int, double ***CC);
45PRIVATE void mult_sparse_dense_mat_transpose(vtx_data *, double **, int, int,
46 float ***);
47PRIVATE bool power_iteration(double *const *, int, int, double **);
48
49/*****************************
50** Single precision (float) **
51** version **
52*****************************/
53
54PRIVATE void orthog1f(int n, float *vec);
55PRIVATE void right_mult_with_vector_ff(const float *, int, const float *,
56 float *restrict);
57PRIVATE void vectors_subtractionf(int, float *, float *, float *);
58PRIVATE void vectors_additionf(int n, float *vector1, float *vector2,
59 float *result);
60PRIVATE void vectors_mult_additionf(int n, float *vector1, float alpha,
61 float *vector2);
62PRIVATE void copy_vectorf(int n, float *source, float *dest);
63PRIVATE double vectors_inner_productf(int n, float *vector1, float *vector2);
64PRIVATE void set_vector_valf(int n, float val, float *result);
65PRIVATE double max_absf(int n, float *vector);
66PRIVATE void square_vec(int n, float *vec);
67PRIVATE void invert_vec(int n, float *vec);
68PRIVATE void sqrt_vecf(int n, float *source, float *target);
69PRIVATE void invert_sqrt_vec(int n, float *vec);
70
71#ifdef __cplusplus
72}
73#endif
macro for API hiding/exposing
#define PRIVATE
Definition api.h:16
#define CC
Definition gc.c:47
PRIVATE void copy_vector(int n, const double *restrict source, double *restrict dest)
Definition matrix_ops.c:264
PRIVATE void sqrt_vecf(int n, float *source, float *target)
Definition matrix_ops.c:429
PRIVATE void invert_sqrt_vec(int n, float *vec)
Definition matrix_ops.c:438
PRIVATE void right_mult_with_vector(const vtx_data *, int, const double *, double *restrict)
PRIVATE void right_mult_with_vector_d(double *const *, int, int, const double *, double *restrict)
PRIVATE void scadd(double *, int, double, double *)
Definition matrix_ops.c:188
PRIVATE void vectors_subtraction(int, double *, double *, double *)
Definition matrix_ops.c:241
PRIVATE void square_vec(int n, float *vec)
Definition matrix_ops.c:413
PRIVATE double vectors_inner_product(int n, const double *vector1, const double *vector2)
Definition matrix_ops.c:270
PRIVATE void vectors_scalar_mult(int, const double *, double, double *)
Definition matrix_ops.c:256
PRIVATE void mult_sparse_dense_mat_transpose(vtx_data *, double **, int, int, float ***)
Definition matrix_ops.c:157
PRIVATE double vectors_inner_productf(int n, float *vector1, float *vector2)
Definition matrix_ops.c:388
PRIVATE double max_absf(int n, float *vector)
Definition matrix_ops.c:404
PRIVATE void set_vector_valf(int n, float val, float *result)
Definition matrix_ops.c:398
PRIVATE void vectors_additionf(int n, float *vector1, float *vector2, float *result)
Definition matrix_ops.c:367
PRIVATE void vectors_addition(int, double *, double *, double *)
Definition matrix_ops.c:249
PRIVATE bool power_iteration(double *const *, int, int, double **)
Definition matrix_ops.c:22
PRIVATE void vectors_subtractionf(int, float *, float *, float *)
Definition matrix_ops.c:359
PRIVATE void right_mult_with_vector_ff(const float *, int, const float *, float *restrict)
PRIVATE void invert_vec(int n, float *vec)
Definition matrix_ops.c:420
PRIVATE double max_abs(int n, double *vector)
Definition matrix_ops.c:281
PRIVATE void copy_vectorf(int n, float *source, float *dest)
Definition matrix_ops.c:382
PRIVATE void orthog1(int n, double *vec)
Definition matrix_ops.c:201
PRIVATE void init_vec_orth1(int n, double *vec)
Definition matrix_ops.c:221
PRIVATE double norm(double *, int)
Definition matrix_ops.c:197
PRIVATE void vectors_mult_additionf(int n, float *vector1, float alpha, float *vector2)
Definition matrix_ops.c:374
PRIVATE void right_mult_with_vector_transpose(double **, int, int, double *, double *)
Definition matrix_ops.c:290
PRIVATE void mult_dense_mat_d(double **, float **, int, int, int, double ***CC)
Definition matrix_ops.c:131
PRIVATE void orthog1f(int n, float *vec)
Definition matrix_ops.c:322
#define alpha
Definition shapes.c:4034