add ipi4
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#include "cpp_headers/fcpp.hh"
|
||||
|
||||
// Berechne die Determinante einer 2x2 Matrix mit doubles
|
||||
double determinante_double(double a, double b, double c, double d) {
|
||||
return a*d - b*c;
|
||||
}
|
||||
|
||||
// Berechne die Determinante einer 2x2 Matrix mit floats
|
||||
float determinante(float a, float b, float c, float d) {
|
||||
return a*d - b*c;
|
||||
}
|
||||
|
||||
// Teste die Assoziativitaet von floating point Zahlen
|
||||
float testAssoziativitaet() {
|
||||
for (int n = 1; n <= 14; n++) {
|
||||
// (a+b)+c
|
||||
float vers1 = (pow(10, n) + -pow(10, n)) + pow(10,-n);
|
||||
// a+(b+c)
|
||||
float vers2 = pow(10, n) + (-pow(10, n) + pow(10,-n));
|
||||
print(n, vers1, vers2, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Berechnet den effektiven Zinssatz mit floats
|
||||
// z: Zinssatz, n: Abrechnungsvorgaenge
|
||||
float zins(float z, int n) {
|
||||
return pow(1 + z/n, n) - 1;
|
||||
}
|
||||
|
||||
// Berechnet den effektiven Zinssatz mit doubles
|
||||
// z: Zinssatz, n: Abrechnungsvorgaenge
|
||||
double zins(double z, int n) {
|
||||
return pow(1 + z/n, n) - 1;
|
||||
}
|
||||
|
||||
// Vergleiche die Berechnung des effektiven Zinssatzes bei n Abrechnungsvorgaengen
|
||||
// mit floats und doubles und vergleiche mit dem Grenzwert für n -> unendlich.
|
||||
void compare(int n) {
|
||||
// Berechne effektiven Zins mit float
|
||||
float zf = zins(0.06, n);
|
||||
// Berechne die Differenz zu exp(z) - 1
|
||||
float difff = exp(0.06) - 1 - zf;
|
||||
// Berechne effektiven Zins mit double
|
||||
double zd = zins(0.06, n);
|
||||
// Berechne die Differenz zu exp(z) - 1
|
||||
double diffd = exp(0.06) - 1 - zd;
|
||||
// Gebe alles aus
|
||||
print("Abrechnungsvorgaenge:", n, 0);
|
||||
print("Zinssatz (float):", zf, 0);
|
||||
print("Abweichung von exp(z) - 1:", difff, 0);
|
||||
print("Zinssatz (double):", zd, 0);
|
||||
print("Abweichung von exp(z) - 1:", diffd, 0);
|
||||
print("");
|
||||
}
|
||||
|
||||
int main() {
|
||||
print("det", determinante(100, 0.01, -0.01, 100), 0);
|
||||
print("double det", determinante_double(100, 0.01, -0.01, 100), 0);
|
||||
testAssoziativitaet();
|
||||
|
||||
// vergleiche fuer verschiedene Werte
|
||||
compare(1);
|
||||
compare(4);
|
||||
compare(12);
|
||||
compare(365);
|
||||
compare(365*24);
|
||||
compare(365*24*60);
|
||||
compare(365*24*60*2);
|
||||
compare(365*24*60*60);
|
||||
}
|
||||
Reference in New Issue
Block a user