87 #define spSMALL_PIVOT 1
106 #define spREAL double
131 #define spDEFAULT_PARTITION 0
132 #define spDIRECT_PARTITION 1
133 #define spINDIRECT_PARTITION 2
134 #define spAUTO_PARTITION 3
161 #define spADD_REAL_ELEMENT(element, real) *(element) += real
163 #define spADD_IMAG_ELEMENT(element, imag) *(element + 1) += imag
165 #define spADD_COMPLEX_ELEMENT(element, real, imag) \
167 *(element) += real; \
168 *(element + 1) += imag; \
171 #define spADD_REAL_QUAD(template, real) \
173 *((template).Element1) += real; \
174 *((template).Element2) += real; \
175 *((template).Element3Negated) -= real; \
176 *((template).Element4Negated) -= real; \
179 #define spADD_IMAG_QUAD(template, imag) \
181 *((template).Element1 + 1) += imag; \
182 *((template).Element2 + 1) += imag; \
183 *((template).Element3Negated + 1) -= imag; \
184 *((template).Element4Negated + 1) -= imag; \
187 #define spADD_COMPLEX_QUAD(template, real, imag) \
189 *((template).Element1) += real; \
190 *((template).Element2) += real; \
191 *((template).Element3Negated) -= real; \
192 *((template).Element4Negated) -= real; \
193 *((template).Element1 + 1) += imag; \
194 *((template).Element2 + 1) += imag; \
195 *((template).Element3Negated + 1) -= imag; \
196 *((template).Element4Negated + 1) -= imag; \
238 extern int spFileMatrix(
char*,
char*,
char*,
int,
int,
int);
254 extern void spPrint(
char*,
int,
int,
int);
265 extern void spMultiply(
char*,
spREAL*,
spREAL*, std::optional<spREAL*> = std::nullopt, std::optional<spREAL*> = std::nullopt);
266 extern void spMultTransposed(
char* eMatrix,
spREAL*
RHS,
spREAL* Solution, std::optional<spREAL*> iRHS = std::nullopt, std::optional<spREAL*> iSolution = std::nullopt);
267 extern void spSolve(
char* eMatrix,
spREAL*
RHS,
spREAL* Solution, std::optional<spREAL*> iRHS = std::nullopt, std::optional<spREAL*> iSolution = std::nullopt);
spREAL spRoundoff(char *, spREAL)
int spGetOnes(char *, int, int, int, struct spTemplate *)
void spScale(char *, spREAL[], spREAL[])
void spPartition(char *, int)
spREAL spPseudoCondition(char *)
void spDeleteRowAndCol(char *, int, int)
int spOrderAndFactor(char *, spREAL[], spREAL, spREAL, int)
void spSolveTransposed(char *, spREAL *, spREAL *, std::optional< spREAL * >=std::nullopt, std::optional< spREAL * >=std::nullopt)
int spGetAdmittance(char *, int, int, struct spTemplate *)
char * spGetInitInfo(spREAL *)
spREAL spLargestElement(char *)
int spGetSize(char *, int)
void spSolve(char *eMatrix, spREAL *RHS, spREAL *Solution, std::optional< spREAL * > iRHS=std::nullopt, std::optional< spREAL * > iSolution=std::nullopt)
void spInstallInitInfo(spREAL *, char *)
void spStripFills(char *)
int spFileStats(char *, char *, char *)
void spPrint(char *, int, int, int)
void spDeterminant(char *, int *, spREAL *, std::optional< spREAL * >=std::nullopt)
int spFileMatrix(char *, char *, char *, int, int, int)
int spGetQuad(char *, int, int, int, int, struct spTemplate *)
char * spCreate(int, int, int *)
void spWhereSingular(char *, int *, int *)
int spFillinCount(char *)
void spMNA_Preorder(char *)
int spFileVector(char *, char *, spREAL *, std::optional< spREAL * >=std::nullopt)
spREAL * spGetElement(char *, int, int)
int spInitialize(char *, int(*)())
void spMultiply(char *, spREAL *, spREAL *, std::optional< spREAL * >=std::nullopt, std::optional< spREAL * >=std::nullopt)
int spElementCount(char *)
spREAL spCondition(char *, spREAL, int *)
void spMultTransposed(char *eMatrix, spREAL *RHS, spREAL *Solution, std::optional< spREAL * > iRHS=std::nullopt, std::optional< spREAL * > iSolution=std::nullopt)