1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
use crate;
// /*
// * -----------------------------------------------------------------
// * Programmer(s): Daniel Reynolds @ UMBC
// * David Gardner @ LLNL
// * Based on code sundials_direct.h by: Radu Serban @ LLNL
// * -----------------------------------------------------------------
// * SUNDIALS Copyright Start
// * Copyright (c) 2025-2026, Lawrence Livermore National Security,
// * University of Maryland Baltimore County, and the SUNDIALS contributors.
// * Copyright (c) 2013-2025, Lawrence Livermore National Security
// * and Southern Methodist University.
// * Copyright (c) 2002-2013, Lawrence Livermore National Security.
// * All rights reserved.
// *
// * See the top-level LICENSE and NOTICE files for details.
// *
// * SPDX-License-Identifier: BSD-3-Clause
// * SUNDIALS Copyright End
// * -----------------------------------------------------------------
// * This is the header file for the dense implementation of the
// * SUNMATRIX module, SUNMATRIX_DENSE.
// *
// * Notes:
// * - The definition of the generic SUNMatrix structure can be found
// * in the header file sundials_matrix.h.
// * - The definition of the type 'sunrealtype' can be found in the
// * header file sundials_types.h, and it may be changed (at the
// * configuration stage) according to the user's needs.
// * The sundials_types.h file also contains the definition
// * for the type 'sunbooleantype' and 'indextype'.
// * -----------------------------------------------------------------
// */
// #ifndef _SUNMATRIX_DENSE_H
// #define _SUNMATRIX_DENSE_H
// #include <stdio.h>
// #include <sundials/sundials_matrix.h>
// #ifdef __cplusplus /* wrapper to enable C++ usage */
// extern "C" {
// #endif
// /* ----------------------------------
// * Dense implementation of SUNMatrix
// * ---------------------------------- */
// struct _SUNMatrixContent_Dense
// {
// sunindextype M;
// sunindextype N;
// sunrealtype* data;
// sunindextype ldata;
// sunrealtype** cols;
// };
// typedef struct _SUNMatrixContent_Dense* SUNMatrixContent_Dense;
pub type SUNMatrixContent_Dense = *mut _SUNMatrixContent_Dense;
// /* ------------------------------------
// * Macros for access to SUNMATRIX_DENSE
// * ------------------------------------ */
// #define SM_CONTENT_D(A) ((SUNMatrixContent_Dense)(A->content))
// #define SM_ROWS_D(A) (SM_CONTENT_D(A)->M)
// #define SM_COLUMNS_D(A) (SM_CONTENT_D(A)->N)
// #define SM_LDATA_D(A) (SM_CONTENT_D(A)->ldata)
// #define SM_DATA_D(A) (SM_CONTENT_D(A)->data)
// #define SM_COLS_D(A) (SM_CONTENT_D(A)->cols)
// #define SM_COLUMN_D(A, j) ((SM_CONTENT_D(A)->cols)[j])
// #define SM_ELEMENT_D(A, i, j) ((SM_CONTENT_D(A)->cols)[j][i])
unsafe extern "C"