Extreme Optimization™: Complexity made simple.

Math and Statistics
Libraries for .NET

  • Home
  • Features
    • Math Library
    • Vector and Matrix Library
    • Statistics Library
    • Performance
    • Usability
  • Documentation
    • Introduction
    • Math Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Reference
  • Resources
    • Downloads
    • QuickStart Samples
    • Sample Applications
    • Frequently Asked Questions
    • Technical Support
  • Blog
  • Order
  • Company
    • About us
    • Testimonials
    • Customers
    • Press Releases
    • Careers
    • Partners
    • Contact us
Introduction
Deployment Guide
Nuget packages
Configuration
Using Parallelism
Expand Mathematics Library User's GuideMathematics Library User's Guide
Expand Vector and Matrix Library User's GuideVector and Matrix Library User's Guide
Expand Data Analysis Library User's GuideData Analysis Library User's Guide
Expand Statistics Library User's GuideStatistics Library User's Guide
Expand Data Access Library User's GuideData Access Library User's Guide
Expand ReferenceReference
  • Extreme Optimization
    • Features
    • Solutions
    • Documentation
    • QuickStart Samples
    • Sample Applications
    • Downloads
    • Technical Support
    • Download trial
    • How to buy
    • Blog
    • Company
    • Resources
  • Documentation
    • Introduction
    • Deployment Guide
    • Nuget packages
    • Configuration
    • Using Parallelism
    • Mathematics Library User's Guide
    • Vector and Matrix Library User's Guide
    • Data Analysis Library User's Guide
    • Statistics Library User's Guide
    • Data Access Library User's Guide
    • Reference
  • Mathematics Library User's Guide
    • General Classes
    • Mathematical Functions
    • Complex Numbers
    • Arbitrary Precision Arithmetic
    • Automatic Differentiation
    • Curves and Interpolation
    • Curve Fitting
    • Solving Equations
    • Optimization
    • Calculus
    • Fast Fourier Transforms
    • Random Numbers
    • Generic Arithmetic
    • Appendices
  • Mathematical Functions
    • Functions of Integers
    • Elementary Functions
    • Special Functions
  • Elementary Functions

Elementary Functions

Extreme Optimization Numerical Libraries for .NET Professional

The Math class in the .NET framework Base Class Libraries implements a large number of elementary functions. Unfortunately, this list is far from complete. The Elementary class in the Extreme.Mathematics namespace defines many elementary functions that are missing from Math class.

Utility Functions

Some functions exist in the .NET Framework, but there implementation is far from optimal. We've implemented them in a more efficient way that in some cases is up to 50x faster.

Utility functions

Method

Description

IsNaN

Checks if a value is Not-a-Number.

IsFinite

Checks if a value represents a finite real number.

IsFinite

Checks if a value represents positive or negative infinity.

Clip

Restricts a value to the specified interval.

Step

Returns the Heaviside step function.

Trigonometric Functions

Calculating a trigonometric function for an argument close to a multiple of π/2 is often problematic. Fortunately, in the actual expressions, the argument is often expressed as a multiple of π. In these cases, it is possible to compute the exact values of the sine, cosine, and tangent. The following methods implement this functionality:

Method

Description

CosPi

Accurately computes the cosine of a value times π.

SinPi

Accurately computes the sine of a value times π.

TanPi

Accurately computes the tangent of a value times π.

Sinc

Returns the unnormalized Sinc function.

A related problem is that the standard methods quickly become less accurate for larger arguments. To make the calculation of a trigonometric function fast and accurate, the argument must be reduced to a relatively small interval around zero. This is done by subtracting an integer multiple of π from the argument. The standard implementation uses a value of π with only 66 bits of precision. Some precision is lost for arguments as small as 30,000.

Worse still, for arguments greater than or equal to 2^63, the argument is returned unchanged. Aside from the fact that this result is completely meaningless, it can cause problems in code that relies on the fact that the sine and cosine are bounded by -1 and +1.

The trigonometric methods Sin, Cos, and Tan perform complete argument reduction, and return accurate results even for very large arguments.

More trigonometric functions

Method

Description

CosPi

Accurately computes the cosine of a value.

SinPi

Accurately computes the sine of a value.

TanPi

Accurately computes the tangent of a value.

Hyperbolic Functions

Method

Description

Cosh

Hyperbolic cosine.

Coth

Hyperbolic cotangent.

Csch

Hyperbolic co-secant.

Sinh

Hyperbolic sine.

Sech

Hyperbolic secant.

Tanh

Hyperbolic tangent.

Inverse Hyperbolic Functions

Method

Description

Acosh

Inverse hyperbolic cosine.

Acoth

Inverse hyperbolic cotangent.

Acsch

Inverse hyperbolic co-secant.

Asech

Inverse hyperbolic secant.

Asinh

Inverse hyperbolic sine.

Atanh

Inverse hyperbolic tangent.

Exponential, Logarithmic and Miscellaneous Functions

The functions in this section calculate expressions with a higher accuracy than using the standard expression would produce.

Exponential, logarithmic, and miscellaneous functions

Method

Description

ExpMinus1

The exponential function minus one, ex-1, calculated to high precision when x is near zero.

Hypot

The hypotenuse of a right-angled triangle with specified sides.

LambertW

Lambert's W function, the (real) solution W of x = WeW.

Log1PlusX

The natural logarithm of 1+x calculated to high precision for x close to zero.

Pow

A number raised to an integer power.

Sqrt1pxm1

The difference between the square root of a number close to 1 and 1.

The Pow method is useful only for larger values of the exponent. For small values, the JIT compiler automatically converts the expression to an optimized multiplication.

Elementary Functions of Decimal Values

The Decimal type is a decimal floating-point type with up to 28 digits of precision. Transcendental functions like sine, cosine, exponential and logarithm are not available in the Math class. The DecimalMath class implements all the methods that are defined for Double for the decimal type to full precision. Because the implementation is mostly in software, the evaluation of these functions takes significantly longer than the built-in functions for double-precision numbers.

Elementary functions of decimal values

Method

Description

Acos

Inverse cosine.

Asin

Inverse sine.

Atan

Inverse tangent.

Atan2

Inverse tangent with two arguments.

Cos

Cosine.

Cosh

Hyperbolic cosine.

Exp

Exponential function.

Log

Natural logarithm.

Log

Logarithm with specified base.

Log10

Base 10 logarithm.

Sin

Sine.

Sinh

Hyperbolic sine.

Sqrt

Square root.

Tan

Tangent.

Tanh

Hyperbolic tangent.

Copyright (c) 2004-2021 ExoAnalytics Inc.

Send comments on this topic to support@extremeoptimization.com

Copyright © 2004-2021, Extreme Optimization. All rights reserved.
Extreme Optimization, Complexity made simple, M#, and M Sharp are trademarks of ExoAnalytics Inc.
Microsoft, Visual C#, Visual Basic, Visual Studio, Visual Studio.NET, and the Optimized for Visual Studio logo
are registered trademarks of Microsoft Corporation.