Contact

R.QSNORM Function (Gnumeric)

Statistical Intermediate Gnumeric Gnumeric 1.12.2 (implementation)

Find skew-normal cutoffs with Gnumeric R.QSNORM. Verify shape/location/scale, log probabilities and inverse checks while respecting CDF and scale limitations.

Verification status: 23 reference, boundary and advanced-check formulas were recalculated with Gnumeric 1.12.57 ssconvert. Saved identities, the blank input and numerical results were independently checked. Gnumeric 1.12.62 was source-checked only. How formula examples are checked

Validation caution: Use a positive scale and inspect the CDF limitations before relying on this numerical inverse. The tested negative-scale call returned about 7.394×10^184 instead of rejecting the invalid distribution.

Quick answer: =R.QSNORM(.5,2,0,1) gives 0.655370400268 in Gnumeric 1.12.57.

Availability and version history

  • Introduced: Implementation documented in Gnumeric 1.12.2 release notes. Earlier registration history was not established here.
  • Supported in: Gnumeric 1.12.62; no retirement is established.
  • Scope: Desktop Gnumeric with its Statistical Functions From R plugin. English comma-separated formulas are shown.
  • Checked: October 14, 2026. Tables and the named advanced check use 1.12.57 ssconvert. Current 1.12.62 source was inspected; that release was not executed.

What R.QSNORM returns

R.QSNORM numerically inverts the skew-normal cumulative distribution. Its result is an observation-unit cutoff, not a probability or a fitted shape estimate. Shape zero uses the normal quantile helper directly; nonzero shape uses the skew-normal CDF and density helpers. Versioned function help.

Syntax and arguments

=R.QSNORM(probability,shape,location,scale[,lower_tail[,log_p]])

Probability, shape, location and scale are required. Use positive scale for the continuous distribution. lower_tail defaults to TRUE and log_p to FALSE. Interior ordinary probabilities are strictly between zero and one; a log input represents the logarithm of the chosen tail probability.

Brackets mark optional arguments; do not type them. Current worksheet implementation.

Reproducible examples

These self-contained formulas were recalculated natively. The separate reference column evaluates the stated mathematical distribution; discrepancies are preserved and explained rather than treated as successful mathematical results. Source branches and typed native outputs explain the boundary cases. Results are rounded to twelve decimal places, or thirteen significant digits for small nonzero values. This is presentation precision, not a universal accuracy guarantee.

Formula Gnumeric 1.12.57 result Independent mathematical reference
=R.QSNORM(.5,2,0,1) 0.655370400268 0.655370400268
=R.QSNORM(.9,2,0,1) 1.644799355393 1.644799355393
=R.QSNORM(.1,2,0,1,FALSE()) 1.644799355393 1.644799355393
=R.QSNORM(LN(.1),2,0,1,FALSE(),TRUE()) 1.644799355393 1.644799355393
=R.QSNORM(.5,-2,0,1) -0.655370400268 -0.655370400268
=R.QSNORM(.5,0,2,3) 2 2
=R.QSNORM(.5,2,2,1) 2.655370400268 2.655370400268
=R.QSNORM(.25,2,0,2) 0.441420025309 0.441420025309

Practical worksheet

For shape 2, location 0 and scale 1, the median is approximately 0.655370400268 and the 90th percentile is 1.644799355393. Upper-tail probability 0.1 gives the same cutoff, including the correctly flagged LN(0.1) form in this selected case.

For shape −2, the median is the negative of the shape-2 median. Changing location to 2 shifts the selected median to approximately 2.655370400268. These examples show why location itself is not generally the median.

Advanced interpretation and checks

The saved inverse check below evaluates R.PSNORM at the computed shape-2 90th percentile and recovers 0.9. Independent inversion of the mathematical CDF also agrees with all eight ordinary examples in the reference table.

This agreement is bounded. The inverter depends on R.PSNORM, whose large-negative-shape branch has a documented probability defect, and R.DSNORM, whose nonzero-location ordinary density has a separate mismatch. The tested shifted median still converged correctly, but these helper limitations prevent a blanket guarantee for other parameters. Validate against an independent probability model when those branches matter.

The saved advanced-check result for =R.PSNORM(R.QSNORM(.9,2,0,1),2,0,1) was 0.9.

Boundaries and troubleshooting

Both endpoints of the nondegenerate skew-normal support are infinite and become #NUM!, in either tail convention. Outside-domain probabilities and positive log probabilities also give #NUM!. The invalid negative-scale observation is retained as a warning, not a usable cutoff.

At shape zero and scale zero, the normal helper returns location for an interior probability; with nonzero shape, the listed zero-scale call errors. Prefer positive scale rather than treating these implementation paths as one consistent degenerate model. Nonnumeric text gives #VALUE!; empty F5 becomes probability zero and errors. Wrong arity gives #N/A.

F5 is genuinely empty, rather than a cell containing an empty string.

Formula Gnumeric 1.12.57 result
=R.QSNORM(0,2,0,1) #NUM!
=R.QSNORM(1,2,0,1) #NUM!
=R.QSNORM(0,2,0,1,FALSE()) #NUM!
=R.QSNORM(1,2,0,1,FALSE()) #NUM!
=R.QSNORM(-.1,2,0,1) #NUM!
=R.QSNORM(1.1,2,0,1) #NUM!
=R.QSNORM(.5,2,0,-1) 7.394064564034E+184
=R.QSNORM(.5,2,0,0) #NUM!
=R.QSNORM(.5,0,2,0) 2
=R.QSNORM(1,2,0,1,TRUE(),TRUE()) #NUM!
=R.QSNORM("abc",2,0,1) #VALUE!
=R.QSNORM(F5,2,0,1) #NUM!
=R.QSNORM(.5,2,0) #N/A
=R.QSNORM(.5,2,0,1,0,0,1) #N/A

Official evidence and checking scope

The relevant complete worksheet callback and inspected calculation helpers are unchanged between the source versions; later numerical execution is not established. Both stale and uncached SUM controls recalculated correctly. Native XML preserves the R.* identities. The secondary ODF export keeps these calls in the ORG.GNUMERIC namespace; it does not establish execution in another product. GUI entry, other locales and other spreadsheet products were not tested.