# GAMBAS BOOK 3.15.2

02.07.2018
k9:k9.6:start

## 9.6 Exponential and logarithmic functions

In many mathematical tasks you need functions to calculate powers, roots or logarithms. Gambas provides you with various functions for this purpose.

## 9.6.1 Correlation of Potencies, Roots and Logarithms

Since dealing with potencies, roots and logarithms is not part of the daily exercises, three basic considerations are put before the description of the corresponding Gambas functions:

• 100 = 102 or power value = baseexponent » power up
• 10 = 2. root_out (100) or base = power valueroot_exponent » root_output
• 2 = log10 (100) or exponent = logBasis (potency value) » logarithmic value

The mathematical operation' Logarithmic operation' hides nothing else than the 'exponent search' for a given number (potency value) and a given basis. If logarithm = log10 (1000) the exponent is searched for, for which 10exponent = 1000. The exponent you are looking for is 3, because 10³ = 1000, which had to be said before you logarithmically start like wild on it.. .

## 9.6.2 Potency functions

FunctionDescription
potency value = Exp(exponent AS Float) AS FloatCalculates the power value p to base e with the exponent' exponent' (p=eexponent). The exponent must be smaller than 709.779999 to avoid overflow errors. The number e is the Euler number.
potency value = Expm (exponent AS Float) AS FloatCalculates the power value p to base e with the exponent' exponent' for very small exponents. The following applies: Expm(x) = Exp(x) - 1.
potency value = Exp2 (exponent AS Float) AS FloatCalculates the power value p for base 2 with the exponent' exponent' (p = 2exponent).
potency value = Exp10 (exponent AS Float) AS FloatCalculates the power value p to base 10 with the exponent' exponent' (p = 10exponent).

Table 9.6.2.1: Operation: Potentiating

## 9.6.3 Root functions

FunctionDescription
2root = Sqr(number AS Float) AS FloatCalculates the 2nd root of a number. The real number' number' must not be negative (number? 0).
3root = Cbr(number AS Float) AS FloatCalculates the cubic root of a number. The real number' number' can be 0 (zero), negative or positive.

Table 9.6.2.1: Operation: root extraction

## 9.6.4 Logarithmic functions

FunctionDescription
exponent = Log (numerus AS Float) As FloatCalculates the natural logarithm of a number (numerus) to the base e (Euler's number) with logarithm = ln(numerus). The symbol' ln' stands for logaritmus naturalis. The number (numerus) must be greater than zero. We are looking for the exponent for which eexponent = numerus applies.
exponent = Logp (numerus AS Float) AS FloatCalculates the logarithm to base e for very small numeric values. The following applies: Logp(x) = Log(1 + x).
exponent = Log2 (numerus AS Float) AS FloatCalculates the logarithm of a number (numerus) to base 2. the number must be greater than zero. We are looking for the exponent for which 2exponent = numerus applies.
exponent = Log10 (number AS Float) AS FloatCalculates the logarithm of a number (numerus) to the base 10.10. The number must be greater than zero. We are looking for the exponent for which 10exponent = numerus applies.

Table 9.6.4.1: Operation: Logarithmic logging

Hints:

• In addition to the Logx() function, Gambas also has functions for calculating the logarithm of a number to base 2 or base 10. To also calculate logarithms for base n, you can use the following relationship: Logn(x) = Log(x) / Log(n).
• Special cases for n = 2 and n = 10: Log2(x) = Log(x) / Log(2) and Log10(x) = Log(x) / Log(10)

## 9.3.5 Example 1

The calculation of the 5th root from the real number 83, for example, requires the use of some of the above-mentioned functions, which is also reflected in the source code extract:

```w = (83)^0.2
ln(w) = 0.5 * ln(83) = 0,88376812155932
w = e^ln(w) = e^0,88376812155932 = 2,42000140696596```

The sample is executed in a similar way:

```p = (2,42000140696596)^5
ln(p) = 5 * ln(2,42000140696596) = 4,4188406077966
p = e^(5 * ln(2,42000140696596))```
```Public Sub btn5Root83_Click()
Dim w As Float

Print "ln(w) = "; 0.2 * Log(83)
w = Exp(0.2 * Log(83))
Print "w = "; Exp(0.2 * Log(83))
Print "Probe 1 (trivial) = "; w * w * w * w * w
Print "ln(p) = "; 5 * Log(Exp(0.2 * Log(83)))
Print "Potenzwert = "; Exp(5 * Log(Exp(0.2 * Log(83))))
End ```

Output in the console of the IDE:

```ln(w) = 0,88376812155932
w = 2,42000140696596
Probe 1 (trivial) = 83,0000000000001
ln(p) = 4,4188406077966
Potenzwert = 83    ```

## 9.6.6 Example 2

The calculation of the power value a^b for a > 0 and any b (a, b ∈ ℝ) works with the following approach: a^b = Exp (b*Log (a)) and delivers 100 in the next calculation:

```a = Cbr(100) ' 3. root of 100
b = 3
Print Exp(b * Log(a))```

For a = Cbr(100) and b = 6, the approximate value is 9999.999999999999999 ≈ 10000.

Articles

## ﻿9.6 Exponential – und Logarithmusfunktionen

In vielen mathematischen Aufgaben benötigen Sie Funktionen, um Potenzen, Wurzeln oder Logarithmen zu berechnen. Gambas stellt Ihnen für diese Zwecke diverse Funktionen zur Verfügung.

## 9.6.1 Zusammenhang von Potenzen, Wurzeln und Logarithmen

Da der Umgang mit Potenzen, Wurzeln und Logarithmen nicht zu den täglichen Übungen zählt, werden drei grundlegende Betrachtungen der Beschreibung der entsprechenden Gambas-Funktionen vorangestellt:

• 100 = 102 oder Potenzwert = Basisexponent » potenzieren
• 10 = 2.Wurzel_aus(100) oder Basis = Potenzwertwurzel-exponent » radizieren
• 2 = log10(100) oder Exponent = logBasis(Potenzwert) » logarithmieren

Hinter der mathematischen Operation 'Logarithmieren' verbirgt sich nichts anderes als die 'Exponentensuche' für eine vorgegebene Zahl (Potenzwert) und gegebener Basis. Bei logarithmus = log10(1000) wird der Exponent gesucht, für den 10exponent = 1000 ist. Der gesuchte Exponent ist 3, denn 10³ = 1000. Das musste einmal gesagt werden, bevor Sie wie wild drauf los logarithmieren … .

## 9.6.2 Potenz-Funktionen

FunktionBeschreibung
potenzwert = Exp (exponent AS Float ) AS FloatBerechnet den Potenzwert p zur Basis e mit dem Exponenten 'exponent' (p=eexponent). Der Exponent muss kleiner als 709.779999 sein, um Überlauffehler zu vermeiden. Die Zahl e ist die Eulersche Zahl.
potenzwert = Expm ( exponent AS Float ) AS FloatBerechnet den Potenzwert p zur Basis e mit dem Exponenten 'exponent' für sehr kleine Exponenten. Es gilt: Expm(x) = Exp(x) - 1.
potenzwert = Exp2 (exponent AS Float) AS FloatBerechnet den Potenzwert p zur Basis 2 mit dem Exponenten 'exponent' (p = 2exponent).
potenzwert = Exp10 (exponent AS Float) AS FloatBerechnet den Potenzwert p zur Basis 10 mit dem Exponenten 'exponent' (p = 10exponent).

Tabelle 9.6.2.1: Operation: Potenzieren

## 9.6.3 Wurzel-Funktionen

FunktionBeschreibung
2root = Sqr ( number AS Float ) AS FloatBerechnet die 2. Wurzel einer Zahl. Die reelle Zahl 'number' darf nicht negativ sein (number ≥ 0).
3root = Cbr ( number AS Float ) AS FloatBerechnet die Kubikwurzel einer Zahl. Die reelle Zahl 'number' kann 0 (Null), negativ oder positiv sein.

## 9.6.4 Logarithmus-Funktionen

FunktionBeschreibung
exponent = Log (numerus AS Float) As FloatBerechnet den natürlichen Logarithmus einer Zahl (numerus) zur Basis e (Eulersche Zahl) mit logarithmus = ln(numerus). Das Symbol 'ln' steht hier für logaritmus naturalis. Die Zahl (numerus) muss größer als Null sein. Gesucht ist der Exponent, für den eexponent = numerus gilt.
exponent = Logp ( numerus AS Float ) AS FloatBerechnet den Logarithmus zur Basis e für sehr kleine Werte des Numerus. Es gilt: Logp(x) = Log(1 + x).
exponent = Log2 ( numerus AS Float ) AS FloatBerechnet den Logarithmus einer Zahl (numerus) zur Basis 2. Die Zahl muss größer als Null sein. Gesucht ist der Exponent, für den 2exponent = numerus gilt.
exponent = Log10 ( number AS Float ) AS FloatBerechnet den Logarithmus einer Zahl (numerus) zur Basis 10. Die Zahl muss größer als Null sein. Gesucht ist der Exponent, für den 10exponent = numerus gilt.

Tabelle 9.6.4.1: Operation: Logarithmieren

Hinweise:

• Gambas besitzt neben der Funktion Logx() auch Funktionen, um den Logarithmus einer Zahl zur Basis 2 oder zur Basis 10 zu berechnen. Um auch Logarithmen zur Basis n zu berechnen, können Sie die folgende Beziehung verwenden: Logn(x) = Log(x) / Log(n).
• Sonderfälle für n = 2 und n = 10: Log2(x) = Log(x) / Log(2) und Log10(x) = Log(x) / Log(10)

## 9.3.5 Beispiel 1

Die Berechnung der 5. Wurzel aus der reellen Zahl 83 erfordert zum Beispiel den Einsatz einiger der o.a. Funktionen, was sich auch im u.a. Quelltext-Ausschnitt widerspiegelt:

```w = (83)^0.2
ln(w) = 0.5 * ln(83) = 0,88376812155932
w = e^ln(w) = e^0,88376812155932 = 2,42000140696596```

Die Probe wird ähnlich ausgeführt:

```p = (2,42000140696596)^5
ln(p) = 5 * ln(2,42000140696596) = 4,4188406077966
p = e^(5 * ln(2,42000140696596))```
```Public Sub btn5Root83_Click()
Dim w As Float

Print "ln(w) = "; 0.2 * Log(83)
w = Exp(0.2 * Log(83))
Print "w = "; Exp(0.2 * Log(83))
Print "Probe 1 (trivial) = "; w * w * w * w * w
Print "ln(p) = "; 5 * Log(Exp(0.2 * Log(83)))
Print "Potenzwert = "; Exp(5 * Log(Exp(0.2 * Log(83))))
End ```

Ausgabe in der Konsole der IDE:

```ln(w) = 0,88376812155932
w = 2,42000140696596
Probe 1 (trivial) = 83,0000000000001
ln(p) = 4,4188406077966
Potenzwert = 83    ```

## 9.6.6 Beispiel 2

Die Berechnung des Potenzwerts a^b für a > 0 und beliebige b (a,b ∈ ℝ) funktioniert über den folgenden Ansatz problemlos: a^b = Exp(b*Log(a)) und liefert 100 in der nächsten Berechnung:

```a = Cbr(100) ' 3. Wurzel aus 100
b = 3
Print Exp(b * Log(a))```

Für a = Cbr(100) und b = 6 ergibt sich der Näherungswert 9999,99999999999 ≈ 10000.