Russ Cox | b54133d | 2009-01-15 16:16:42 -0800 | [diff] [blame] | 1 | // Copyright 2009 The Go Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
Nigel Tao | 6a186d3 | 2011-04-20 09:57:05 +1000 | [diff] [blame] | 5 | // Package math provides basic constants and mathematical functions. |
Russ Cox | b54133d | 2009-01-15 16:16:42 -0800 | [diff] [blame] | 6 | package math |
| 7 | |
Russ Cox | dfc3910 | 2009-03-05 13:31:01 -0800 | [diff] [blame] | 8 | // Mathematical constants. |
Rob Pike | 13443cc | 2012-02-10 15:56:51 +1100 | [diff] [blame] | 9 | // Reference: http://oeis.org/Axxxxxx |
Russ Cox | 839a684 | 2009-01-20 14:40:40 -0800 | [diff] [blame] | 10 | const ( |
Robert Griesemer | a3d1045 | 2009-12-15 15:35:38 -0800 | [diff] [blame] | 11 | E = 2.71828182845904523536028747135266249775724709369995957496696763 // A001113 |
| 12 | Pi = 3.14159265358979323846264338327950288419716939937510582097494459 // A000796 |
| 13 | Phi = 1.61803398874989484820458683436563811772030917980576286213544862 // A001622 |
Russ Cox | 2c8d9a5 | 2009-01-15 19:11:32 -0800 | [diff] [blame] | 14 | |
Robert Griesemer | a3d1045 | 2009-12-15 15:35:38 -0800 | [diff] [blame] | 15 | Sqrt2 = 1.41421356237309504880168872420969807856967187537694807317667974 // A002193 |
| 16 | SqrtE = 1.64872127070012814684865078781416357165377610071014801157507931 // A019774 |
| 17 | SqrtPi = 1.77245385090551602729816748334114518279754945612238712821380779 // A002161 |
| 18 | SqrtPhi = 1.27201964951406896425242246173749149171560804184009624861664038 // A139339 |
Russ Cox | 2c8d9a5 | 2009-01-15 19:11:32 -0800 | [diff] [blame] | 19 | |
Robert Griesemer | a3d1045 | 2009-12-15 15:35:38 -0800 | [diff] [blame] | 20 | Ln2 = 0.693147180559945309417232121458176568075500134360255254120680009 // A002162 |
| 21 | Log2E = 1 / Ln2 |
| 22 | Ln10 = 2.30258509299404568401799145468436420760110148862877297603332790 // A002392 |
| 23 | Log10E = 1 / Ln10 |
Rob Pike | 08b5b48 | 2009-07-28 12:57:33 -0700 | [diff] [blame] | 24 | ) |
Rob Pike | 326de9c | 2009-07-28 11:53:16 -0700 | [diff] [blame] | 25 | |
Russ Cox | e50d3ba | 2009-07-28 14:50:50 -0700 | [diff] [blame] | 26 | // Floating-point limit values. |
| 27 | // Max is the largest finite value representable by the type. |
Russ Cox | 9282a76 | 2010-12-10 11:39:09 -0800 | [diff] [blame] | 28 | // SmallestNonzero is the smallest positive, non-zero value representable by the type. |
Rob Pike | 08b5b48 | 2009-07-28 12:57:33 -0700 | [diff] [blame] | 29 | const ( |
Robert Griesemer | 28e0e18 | 2012-02-23 10:17:24 -0800 | [diff] [blame] | 30 | MaxFloat32 = 3.40282346638528859811704183484516925440e+38 // 2**127 * (2**24 - 1) / 2**23 |
| 31 | SmallestNonzeroFloat32 = 1.401298464324817070923729583289916131280e-45 // 1 / 2**(127 - 1 + 23) |
Rob Pike | 08b5b48 | 2009-07-28 12:57:33 -0700 | [diff] [blame] | 32 | |
Robert Griesemer | 28e0e18 | 2012-02-23 10:17:24 -0800 | [diff] [blame] | 33 | MaxFloat64 = 1.797693134862315708145274237317043567981e+308 // 2**1023 * (2**53 - 1) / 2**52 |
| 34 | SmallestNonzeroFloat64 = 4.940656458412465441765687928682213723651e-324 // 1 / 2**(1023 - 1 + 52) |
Russ Cox | e50d3ba | 2009-07-28 14:50:50 -0700 | [diff] [blame] | 35 | ) |
| 36 | |
| 37 | // Integer limit values. |
| 38 | const ( |
Robert Griesemer | a3d1045 | 2009-12-15 15:35:38 -0800 | [diff] [blame] | 39 | MaxInt8 = 1<<7 - 1 |
| 40 | MinInt8 = -1 << 7 |
| 41 | MaxInt16 = 1<<15 - 1 |
| 42 | MinInt16 = -1 << 15 |
| 43 | MaxInt32 = 1<<31 - 1 |
| 44 | MinInt32 = -1 << 31 |
| 45 | MaxInt64 = 1<<63 - 1 |
| 46 | MinInt64 = -1 << 63 |
| 47 | MaxUint8 = 1<<8 - 1 |
| 48 | MaxUint16 = 1<<16 - 1 |
| 49 | MaxUint32 = 1<<32 - 1 |
| 50 | MaxUint64 = 1<<64 - 1 |
Russ Cox | b54133d | 2009-01-15 16:16:42 -0800 | [diff] [blame] | 51 | ) |