{"openapi":"3.1.0","info":{"title":"Linear Algebra","version":"1.0.0","description":"Matrix multiply, determinant, inverse, rank, linear solve, eigenvalues, vector ops, least squares and transforms. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Linear Algebra: Matrix multiply, determinant, inverse, rank, linear solve, eigenvalues, vector ops, least squares and transforms. Use /matrix-multiply to multiply two matrices, /determinant for the determinant, /inverse for the inverse with a residual and condition number, /transpose for the transpose with trace and symmetry, /rank for rank and reduced row echelon form, /solve for Ax=b by Gaussian elimination with partial pivoting and a condition-number warning, /eigen for eigenvalues of 2x2 matrices and symmetric matrices up to 10x10, /vector-ops for dot, cross, norm, angle, projection and distance, /least-squares for line and polynomial fits and /transform-compose for 2D and 3D rotation, scale and translate matrices. Matrices are JSON like [[1,2],[3,4]] or 1,2;3,4 and are capped at 10x10 and 100 elements. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://linear-algebra.x402tookit.com"}],"paths":{"/determinant":{"get":{"operationId":"determinant","summary":"Determinant of a square matrix (up to 10x10) by LU with partial pivoting, flagging a numerically singular matrix.","description":"Determinant of a square matrix (up to 10x10) by LU with partial pivoting, flagging a numerically singular matrix.","tags":["determinant","matrix","singular","linear-algebra"],"parameters":[{"name":"A","in":"query","required":true,"description":"Square matrix, JSON like [[1,2],[3,4]] or 1,2;3,4 (max 10x10)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"determinant":{"type":["null","number"]},"singular":{"type":["boolean","null"]},"size":{"type":["null","number"]},"relativeToHadamardBound":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"DETERMINANT_COMPUTED","summary":"The determinant of the 3x3 matrix is -306.","reasons":["LU decomposition with partial pivoting: the determinant is the product of the pivots times the sign of the row swaps.","Smallest pivot is 6."],"determinant":-306,"singular":false,"size":3,"relativeToHadamardBound":0.6841,"degraded":false,"notChecked":["exact arithmetic: a determinant near zero is judged against a stated tolerance, not proved zero","overflow beyond double range (entries are capped at 1e15)"],"source":"computed locally","asOf":"2026-10-12T00:51:54.937Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/determinant"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/determinant"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/determinant"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/determinant"}}]}}},"/eigen":{"get":{"operationId":"eigen","summary":"Eigenvalues and eigenvectors of a 2x2 matrix (closed form) or a symmetric matrix up to 10x10 (Jacobi).","description":"Eigenvalues and eigenvectors of a 2x2 matrix (closed form) or a symmetric matrix up to 10x10 (Jacobi).","tags":["eigenvalues","eigenvectors","jacobi","symmetric"],"parameters":[{"name":"A","in":"query","required":true,"description":"2x2 matrix, or symmetric NxN up to 10x10, JSON like [[2,1],[1,2]] or 2,1;1,2","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"eigenvalues":{"type":["array","null"],"items":{"type":"object","properties":{"re":{"type":["null","number"]},"im":{"type":["null","number"]}}}},"eigenvectors":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"trace":{"type":["null","number"]},"determinant":{"type":["null","number"]},"sumOfEigenvalues":{"type":["null","number"]},"productOfEigenvalues":{"type":["null","number"]},"maxResidualAvMinusLambdaV":{"type":["null","number"]},"symmetric":{"type":["boolean","null"]},"definiteness":{"type":["null","string"]},"defective":{"type":["boolean","null"]},"method":{"type":["null","string"]},"size":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"EIGENVALUES_REAL","summary":"3x3 matrix: eigenvalues 3.41421356237, 2, 0.585786437627 (cyclic Jacobi rotations).","reasons":["Sum of eigenvalues 6 equals the trace 6; product 4 equals the determinant 4.","A symmetric real matrix always has real eigenvalues and orthogonal eigenvectors.","…1 more"],"eigenvalues":[{"re":3.41421356237,"im":0},{"re":2,"im":0}],"eigenvectors":[[0.5,-0.707106781187],[0.707106781187,0]],"trace":6,"determinant":4,"sumOfEigenvalues":6,"productOfEigenvalues":4,"maxResidualAvMinusLambdaV":8.882e-16,"symmetric":true,"definiteness":"positive definite","defective":false,"method":"cyclic Jacobi rotations","size":3,"degraded":false,"notChecked":["non-symmetric matrices larger than 2x2 (refused rather than guessed)","complex eigenvectors of a 2x2 with complex eigenvalues (the values are given, the vectors are not)","…1 more"],"source":"computed locally","asOf":"2026-10-12T00:51:55.194Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/eigen"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/eigen"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/eigen"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/eigen"}}]}}},"/inverse":{"get":{"operationId":"inverse","summary":"Inverse of a square matrix (up to 10x10) by Gauss-Jordan, with A*inv(A) residual and a condition number.","description":"Inverse of a square matrix (up to 10x10) by Gauss-Jordan, with A*inv(A) residual and a condition number.","tags":["inverse","matrix","condition-number","linear-algebra"],"parameters":[{"name":"A","in":"query","required":true,"description":"Square matrix, JSON like [[4,7],[2,6]] or 4,7;2,6 (max 10x10)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"inverse":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"conditionNumber1Norm":{"type":["null","number"]},"illConditioned":{"type":["boolean","null"]},"digitsLostEstimate":{"type":["null","number"]},"maxResidualAAinvMinusI":{"type":["null","number"]},"singular":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"INVERTIBLE","summary":"Inverse found; 1-norm condition number about 14.3.","reasons":["Gauss-Jordan elimination with partial pivoting.","The condition number is ||A||_1 * ||inv(A)||_1 using the computed inverse. About 1 of the ~16 digits of a double can be lost.","…1 more"],"inverse":[[0.6,-0.7],[-0.2,0.4]],"conditionNumber1Norm":14.3,"illConditioned":false,"digitsLostEstimate":1,"maxResidualAAinvMinusI":2.22e-16,"singular":false,"degraded":false,"notChecked":["exact arithmetic: for an ill-conditioned matrix the printed digits beyond the condition number's reach are noise","sensitivity of the inverse to errors in your own input data"],"source":"computed locally","asOf":"2026-10-12T00:51:55.457Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/inverse"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/inverse"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/inverse"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/inverse"}}]}}},"/least-squares":{"get":{"operationId":"least_squares","summary":"Least-squares line or polynomial fit (degree 1 to 6, up to 100 points) with coefficients, R-squared and residuals.","description":"Least-squares line or polynomial fit (degree 1 to 6, up to 100 points) with coefficients, R-squared and residuals.","tags":["least-squares","regression","polynomial-fit","curve-fit"],"parameters":[{"name":"x","in":"query","required":true,"description":"x values, JSON like [1,2,3,4] or 1,2,3,4 (up to 100)","schema":{"type":"string"}},{"name":"y","in":"query","required":true,"description":"y values, same count as x","schema":{"type":"string"}},{"name":"degree","in":"query","required":false,"description":"Polynomial degree 1 to 6 (default 1 = straight line); needs at least degree+1 points","schema":{"type":"integer"}},{"name":"at","in":"query","required":false,"description":"Optional x at which to evaluate the fitted curve","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"degree":{"type":["null","number"]},"points":{"type":["null","number"]},"coefficients":{"type":["array","null"],"items":{"type":"number"}},"coefficientOrder":{"type":["null","string"]},"rSquared":{"type":["null","number"]},"sumSquaredResiduals":{"type":["null","number"]},"rmse":{"type":["null","number"]},"residualStandardError":{"type":["null","number"]},"fitted":{"type":["array","null"],"items":{"type":"number"}},"residuals":{"type":["array","null"],"items":{"type":"number"}},"conditioning":{"type":["null","object"],"properties":{"centre":{"type":["null","number"]},"halfRange":{"type":["null","number"]},"note":{"type":["null","string"]}}},"slope":{"type":["null","number"]},"intercept":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"FIT_COMPUTED","summary":"Degree 1 least-squares fit of 4 points, R-squared 0.7.","reasons":["Householder QR on the (centred and scaled) Vandermonde matrix: minimises the sum of squared vertical residuals.","R-squared is 1 minus residual sum of squares over total sum of squares; it is null when all y are equal.","…1 more"],"degree":1,"points":4,"coefficients":[3.5,1.4],"coefficientOrder":"ascending powers: c0 + c1*x + c2*x^2 + ...","rSquared":0.7,"sumSquaredResiduals":4.2,"rmse":1.0246950766,"residualStandardError":1.44913767462,"fitted":[4.9,6.3],"residuals":[1.1,-1.3],"conditioning":{"centre":2.5,"halfRange":1.5,"note":"the fit is solved in t = (x - centre)/halfRange for accuracy and converted back"},"slope":1.4,"intercept":3.5,"degraded":false,"notChecked":["whether a polynomial is the right model (high degree on few points overfits)","outliers, heteroscedasticity and the statistical significance of the coefficients","…1 more"],"source":"computed locally","asOf":"2026-10-12T00:51:55.720Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/least-squares"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/least-squares"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/least-squares"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/least-squares"}}]}}},"/matrix-multiply":{"get":{"operationId":"matrix_multiply","summary":"Multiply two matrices (up to 10x10) given as JSON, with shape check and the product matrix.","description":"Multiply two matrices (up to 10x10) given as JSON, with shape check and the product matrix.","tags":["matrix","multiply","linear-algebra"],"parameters":[{"name":"A","in":"query","required":true,"description":"Left matrix, JSON like [[1,2],[3,4]] or 1,2;3,4 (max 10x10)","schema":{"type":"string"}},{"name":"B","in":"query","required":true,"description":"Right matrix, same formats; rows of B must equal columns of A","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"product":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"shape":{"type":["array","null"],"items":{"type":"number"}},"square":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"PRODUCT_COMPUTED","summary":"A (2x2) times B (2x2) is a 2x2 matrix.","reasons":["Entry (i,j) is the sum over t of A[i][t] * B[t][j]."],"product":[[19,22],[43,50]],"shape":[2,2],"square":true,"degraded":false,"notChecked":["exactness: 64-bit floating point, so very large or very different magnitudes round","that multiplication order is the one you intended (AB differs from BA)"],"source":"computed locally","asOf":"2026-10-12T00:51:55.983Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/matrix-multiply"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/matrix-multiply"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/matrix-multiply"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/matrix-multiply"}}]}}},"/rank":{"get":{"operationId":"rank","summary":"Rank, nullity and reduced row echelon form of a matrix (up to 10x10) with pivot columns.","description":"Rank, nullity and reduced row echelon form of a matrix (up to 10x10) with pivot columns.","tags":["rank","rref","nullity","matrix"],"parameters":[{"name":"A","in":"query","required":true,"description":"Matrix, JSON like [[1,2,3],[4,5,6],[7,8,9]] or 1,2,3;4,5,6;7,8,9 (max 10x10)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"rank":{"type":["null","number"]},"nullity":{"type":["null","number"]},"leftNullity":{"type":["null","number"]},"rows":{"type":["null","number"]},"cols":{"type":["null","number"]},"fullRank":{"type":["boolean","null"]},"pivotColumns":{"type":["array","null"],"items":{"type":"number"}},"rref":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"RANK_DEFICIENT","summary":"Rank 2 of a 3x3 matrix (rank deficient); nullity 1.","reasons":["Gauss-Jordan elimination with partial pivoting; the rank is the number of pivots.","Nullity is columns minus rank (the dimension of the null space)."],"rank":2,"nullity":1,"leftNullity":1,"rows":3,"cols":3,"fullRank":false,"pivotColumns":[0,1],"rref":[[1,0],[0,1]],"degraded":false,"notChecked":["rank is numerical: an entry or pivot at most 1e-12 times the largest entry counts as zero, so a matrix that is nearly rank-deficient can be reported full rank and vice versa","a singular-value (SVD) rank, which is more robust for noisy data"],"source":"computed locally","asOf":"2026-10-12T00:51:56.246Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/rank"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/rank"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/rank"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/rank"}}]}}},"/solve":{"get":{"operationId":"solve","summary":"Solve Ax=b (n up to 10) by Gaussian elimination with partial pivoting; flags singular and ill-conditioned systems.","description":"Solve Ax=b (n up to 10) by Gaussian elimination with partial pivoting; flags singular and ill-conditioned systems.","tags":["solve","linear-system","gaussian-elimination","condition-number"],"parameters":[{"name":"A","in":"query","required":true,"description":"Square coefficient matrix, JSON like [[2,1,-1],[-3,-1,2],[-2,1,2]] (max 10x10)","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Right-hand side vector, JSON like [8,-11,-3] or 8,-11,-3; same length as A has rows","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"solution":{"type":["array","null"],"items":{"type":"number"}},"conditionNumber1Norm":{"type":["null","number"]},"illConditioned":{"type":["boolean","null"]},"digitsLostEstimate":{"type":["null","number"]},"maxResidual":{"type":["null","number"]},"singular":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SOLVED","summary":"Unique solution found; condition number about 77.","reasons":["Gaussian elimination with partial pivoting, then back substitution.","Condition number (1-norm) 77: a relative error in A or b can be amplified by up to this factor in x.","…1 more"],"solution":[2,3],"conditionNumber1Norm":77,"illConditioned":false,"digitsLostEstimate":1,"maxResidual":8.882e-16,"singular":false,"degraded":false,"notChecked":["uncertainty in your own inputs (the condition number shows how much it is amplified)","exact arithmetic: 64-bit floating point","…1 more"],"source":"computed locally","asOf":"2026-10-12T00:51:56.509Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/solve"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/solve"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/solve"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/solve"}}]}}},"/transform-compose":{"get":{"operationId":"transform_compose","summary":"Compose 2D or 3D rotate, scale and translate steps into one homogeneous matrix, optionally applied to a point.","description":"Compose 2D or 3D rotate, scale and translate steps into one homogeneous matrix, optionally applied to a point.","tags":["transform","rotation","homogeneous","graphics"],"parameters":[{"name":"steps","in":"query","required":true,"description":"JSON list applied in order, e.g. [{\"op\":\"rotate\",\"deg\":90},{\"op\":\"translate\",\"tx\":1,\"ty\":0}]; scale takes s or sx,sy,sz; 3D rotate needs axis","schema":{"type":"string"}},{"name":"dim","in":"query","required":false,"description":"2 (default, 3x3 matrix) or 3 (4x4 matrix)","schema":{"type":"integer"}},{"name":"point","in":"query","required":false,"description":"Optional point to transform, JSON like [1,0] or 1,0,0 with dim entries","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"matrix":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"size":{"type":["null","number"]},"stepsApplied":{"type":["array","null"],"items":{"type":"string"}},"orderNote":{"type":["null","string"]},"linearPartDeterminant":{"type":["null","number"]},"rigidMotion":{"type":["boolean","null"]},"preservesDistances":{"type":["boolean","null"]},"inverse":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"transformedPoint":{"type":["array","null"],"items":{"type":"number"}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"TRANSFORM_COMPOSED","summary":"Composed 2 steps into one 3x3 matrix; point maps to (1, 1).","reasons":["Each step is a homogeneous matrix; they are multiplied so the first step acts first.","The linear part is orthonormal: distances and angles are preserved.","…1 more"],"matrix":[[0,-1],[1,0]],"size":3,"stepsApplied":["rotate(90 deg)","translate(1, 0)"],"orderNote":"steps are applied first to last to a column vector, so the matrix is M = S_n * ... * S_2 * S_1","linearPartDeterminant":1,"rigidMotion":true,"preservesDistances":true,"inverse":[[0,1],[-1,0]],"transformedPoint":[1,1],"degraded":false,"notChecked":["your graphics library's conventions: this uses column vectors, right-handed axes and counter-clockwise positive rotation, so a row-vector or left-handed system needs the transpose or a sign change","shear, reflection and perspective (not offered)","…1 more"],"source":"computed locally","asOf":"2026-10-12T00:51:56.774Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transform-compose"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transform-compose"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transform-compose"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transform-compose"}}]}}},"/transpose":{"get":{"operationId":"transpose","summary":"Transpose a matrix (up to 10x10) with trace, symmetry and skew-symmetry flags, and Frobenius and 1-norms.","description":"Transpose a matrix (up to 10x10) with trace, symmetry and skew-symmetry flags, and Frobenius and 1-norms.","tags":["transpose","matrix","symmetric","trace"],"parameters":[{"name":"A","in":"query","required":true,"description":"Matrix, JSON like [[1,2,3],[4,5,6]] or 1,2,3;4,5,6 (max 10x10)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"transpose":{"type":["array","null"],"items":{"type":"array","items":{"type":"number"}}},"shape":{"type":["array","null"],"items":{"type":"number"}},"transposeShape":{"type":["array","null"],"items":{"type":"number"}},"square":{"type":["boolean","null"]},"trace":{},"symmetric":{},"skewSymmetric":{},"frobeniusNorm":{"type":["null","number"]},"oneNorm":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"TRANSPOSE_COMPUTED","summary":"Transpose of the 2x3 matrix is 3x2.","reasons":["Entry (i,j) of the transpose is entry (j,i) of the original.","Trace, symmetry and skew-symmetry need a square matrix and are null here."],"transpose":[[1,4],[2,5]],"shape":[2,3],"transposeShape":[3,2],"square":false,"trace":null,"symmetric":null,"skewSymmetric":null,"frobeniusNorm":9.53939201417,"oneNorm":9,"degraded":false,"notChecked":["symmetry is tested with a 1e-9 relative tolerance, not exactly","definiteness (use /eigen for that)"],"source":"computed locally","asOf":"2026-10-12T00:51:57.037Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transpose"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transpose"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transpose"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/transpose"}}]}}},"/vector-ops":{"get":{"operationId":"vector_ops","summary":"Vector dot, cross, norm, angle, projection, unit vector and distance for vectors of up to 100 entries.","description":"Vector dot, cross, norm, angle, projection, unit vector and distance for vectors of up to 100 entries.","tags":["vector","dot-product","cross-product","angle","projection"],"parameters":[{"name":"op","in":"query","required":true,"description":"One of dot, cross, norm, angle, projection, unit, distance","schema":{"type":"string"}},{"name":"a","in":"query","required":true,"description":"First vector, JSON like [1,2,3] or 1,2,3","schema":{"type":"string"}},{"name":"b","in":"query","required":false,"description":"Second vector, same length; required for every op except norm and unit","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"op":{"type":["null","string"]},"result":{"type":["array","null"],"items":{"type":"number"}},"magnitude":{"type":["null","number"]},"parallel":{"type":["boolean","null"]},"dimension":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CROSS_COMPUTED","summary":"Cross product (-3, 6, -3); parallelogram area 7.34846922835.","reasons":["Right-handed cross product, perpendicular to both inputs.","Its length is the area of the parallelogram the vectors span; zero means parallel."],"op":"cross","result":[-3,6],"magnitude":7.34846922835,"parallel":false,"dimension":3,"degraded":false,"notChecked":["exact arithmetic: 64-bit floating point","units or coordinate frames (the numbers are treated as plain Cartesian components)","…1 more"],"source":"computed locally","asOf":"2026-10-12T00:51:57.300Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/vector-ops"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/vector-ops"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/vector-ops"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://linear-algebra.x402tookit.com/vector-ops"}}]}}}}}