Math.Log Method (Double, Double)
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Returns the logarithm of a specified number in a specified base.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- a
- Type: System.Double
A number whose logarithm is to be found.
- newBase
- Type: System.Double
The base of the logarithm.
Return Value
Type: System.DoubleOne of the values in the following table. (+Infinity denotes PositiveInfinity, -Infinity denotes NegativeInfinity, and NaN denotes NaN.)
a | newBase | Return Value |
|---|---|---|
a> 0 | (0 <newBase< 1) -or-(newBase> 1) | lognewBase(a) |
a< 0 | (any value) | NaN |
(any value) | newBase< 0 | NaN |
a != 1 | newBase = 0 | NaN |
a != 1 | newBase = +Infinity | NaN |
a = NaN | (any value) | NaN |
(any value) | newBase = NaN | NaN |
(any value) | newBase = 1 | NaN |
a = 0 | 0 <newBase< 1 | +Infinity |
a = 0 | newBase> 1 | -Infinity |
a = +Infinity | 0 <newBase< 1 | -Infinity |
a = +Infinity | newBase> 1 | +Infinity |
a = 1 | newBase = 0 | 0 |
a = 1 | newBase = +Infinity | 0 |
The following example uses Log to evaluate certain logarithmic identities for selected values.
// Example for the Math.Log( double ) and Math.Log( double, double ) methods. using System; class Example { public static void Demo(System.Windows.Controls.TextBlock outputBlock) { outputBlock.Text += "This example of Math.Log( double ) and " + "Math.Log( double, double )\n" + "generates the following output.\n" + "\n"; outputBlock.Text += "Evaluate these identities with " + "selected values for X and B (base):" + "\n"; outputBlock.Text += " log(B)[X] == 1 / log(X)[B]" + "\n"; outputBlock.Text += " log(B)[X] == ln[X] / ln[B]" + "\n"; outputBlock.Text += " log(B)[X] == log(B)[e] * ln[X]" + "\n"; UseBaseAndArg(outputBlock, 0.1, 1.2); UseBaseAndArg(outputBlock, 1.2, 4.9); UseBaseAndArg(outputBlock, 4.9, 9.9); UseBaseAndArg(outputBlock, 9.9, 0.1); } // Evaluate logarithmic identities that are functions of two arguments. static void UseBaseAndArg(System.Windows.Controls.TextBlock outputBlock, double argB, double argX) { // Evaluate log(B)[X] == 1 / log(X)[B]. outputBlock.Text += String.Format( "\n Math.Log({1}, {0}) == {2:E16}" + "\n 1.0 / Math.Log({0}, {1}) == {3:E16}", argB, argX, Math.Log(argX, argB), 1.0 / Math.Log(argB, argX)) + "\n"; // Evaluate log(B)[X] == ln[X] / ln[B]. outputBlock.Text += String.Format( " Math.Log({1}) / Math.Log({0}) == {2:E16}", argB, argX, Math.Log(argX) / Math.Log(argB)) + "\n"; // Evaluate log(B)[X] == log(B)[e] * ln[X]. outputBlock.Text += String.Format( "Math.Log(Math.E, {0}) * Math.Log({1}) == {2:E16}", argB, argX, Math.Log(Math.E, argB) * Math.Log(argX)) + "\n"; } } /* This example of Math.Log( double ) and Math.Log( double, double ) generates the following output. Evaluate these identities with selected values for X and B (base): log(B)[X] == 1 / log(X)[B] log(B)[X] == ln[X] / ln[B] log(B)[X] == log(B)[e] * ln[X] Math.Log(1.2, 0.1) == -7.9181246047624818E-002 1.0 / Math.Log(0.1, 1.2) == -7.9181246047624818E-002 Math.Log(1.2) / Math.Log(0.1) == -7.9181246047624818E-002 Math.Log(Math.E, 0.1) * Math.Log(1.2) == -7.9181246047624804E-002 Math.Log(4.9, 1.2) == 8.7166610085093179E+000 1.0 / Math.Log(1.2, 4.9) == 8.7166610085093161E+000 Math.Log(4.9) / Math.Log(1.2) == 8.7166610085093179E+000 Math.Log(Math.E, 1.2) * Math.Log(4.9) == 8.7166610085093179E+000 Math.Log(9.9, 4.9) == 1.4425396251981288E+000 1.0 / Math.Log(4.9, 9.9) == 1.4425396251981288E+000 Math.Log(9.9) / Math.Log(4.9) == 1.4425396251981288E+000 Math.Log(Math.E, 4.9) * Math.Log(9.9) == 1.4425396251981288E+000 Math.Log(0.1, 9.9) == -1.0043839404494075E+000 1.0 / Math.Log(9.9, 0.1) == -1.0043839404494075E+000 Math.Log(0.1) / Math.Log(9.9) == -1.0043839404494075E+000 Math.Log(Math.E, 9.9) * Math.Log(0.1) == -1.0043839404494077E+000 */