MCPcopy Create free account
hub / github.com/Singular/Singular / realSqrt

Function realSqrt

kernel/linear_algebra/linearAlgebra.cc:601–624  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

599}
600
601bool realSqrt(const number n, const number tolerance, number &root)
602{
603 if (!nGreaterZero(n)) return false;
604 if (nIsZero(n)) return nInit(0);
605
606 number oneHalf = complexNumber(0.5, 0.0);
607 number nHalf = nMult(n, oneHalf);
608 root = nCopy(n);
609 number nOld = complexNumber(10.0, 0.0);
610 number nDiff = nCopy(nOld);
611
612 while (nGreater(nDiff, tolerance))
613 {
614 nDelete(&nOld);
615 nOld = root;
616 root = nAdd(nMult(oneHalf, nOld), nDiv(nHalf, nOld));
617 nDelete(&nDiff);
618 nDiff = nSub(nOld, root);
619 if (!nGreaterZero(nDiff)) nDiff = nInpNeg(nDiff);
620 }
621
622 nDelete(&nOld); nDelete(&nDiff); nDelete(&oneHalf); nDelete(&nHalf);
623 return true;
624}
625
626int quadraticSolve(const poly p, number &s1, number &s2,
627 const number tolerance)

Callers 2

quadraticSolveFunction · 0.85
hessenbergStepFunction · 0.85

Calls 1

complexNumberFunction · 0.85

Tested by

no test coverage detected