// Erweitertes Math-Object V0.5, 2003 (C) by Thorsten Willert // V0.2 Typüberprüfung eingebaut seit // V0.3 Konstanten erweitert // V0.4 Korrektur: Absoluter Nullpunkt // neu: c2f Celsius -> Fahrenheit // neu: f2c Fahrenheit -> Celsius // V0.5 neu: Avogadro Konstante // Dieses Programm wird unter den Bedingungen der GPL v2 veröffentlicht // Konstanten ################################################################# // Mat.AZ // Math.G // Math.C // Math.A // Math.SQRT3 Math.AZ = -273.15 // Absoluter Nullpunkt in °C Math.G = 9.80665; // Erdbeschleunigung, standard Math.C = 299792458; // Lichtgeschwindigkeit m/s (Vakuum) Math.A = 6.0221353e23 // Avogadro Konstante (Stand 17.09.2003) Math.SQRT3 = Math.sqrt(3); // Quadratwurzel aus 3 // Funktionen ################################################################# // Math.cot(Num) // Math.round2(Num, Places [Num]) // Math.sum(Num, Num, ... ) // Math.max(Num, Num, ...) // Math.min(Num, Num, ...) // Math.average(Num, Num, ...) // Math.isEven(Num) // Math.isOdd(Num) // Math.isPrime(Num) // Math.getFactors(Num) // Math.sq(Num) // Math.deg2rad(Num) // Math.rad2deg(Num) // Math.c2f(Num) // Math.f2c(Num) // cotangens #################################### // eingebaut seit V0.1 // V0.2 // return: number Math.cot = function cot(Num) { return isNaN(Num) == false ? (1 / Math.tan(Num)) : NaN; }; // Runden auf angegebenen Nachkommastelle ####### // eingebaut seit V0.1 // V0.2 // return: number Math.round2 = function round2(Num, X) { if ( (isNaN(Num) == false) && (isNaN(X) == false) ) { var X = (!X ? 2 : X); return Math.round( Num * Math.pow(10,X) ) / Math.pow(10,X) } else return NaN; }; // Summe ######################################## // eingebaut seit V0.1 // V0.2 // return: number Math.sum = function sum() { var ergebnis = 0 for (var i=0; i<sum.arguments.length; i++) { if (isNaN(sum.arguments[i]) == true) { ergebnis = NaN; break; } else ergebnis += sum.arguments[i]; } return ergebnis; }; // Maximum aus allen übergebenen Zahlen ######### // eingebaut seit V0.1 // V0.2 // return: number Math.max = function max() { var ergebnis = max.arguments[0]; for (var i=0; i<max.arguments.length; i++) { if (isNaN(max.arguments[i]) == true) { ergebnis = NaN; break; } else if (max.arguments[i] > ergebnis) ergebnis = max.arguments[i]; }; return ergebnis; }; // Minimum aus allen übergebenen Zahlen ######### // eingebaut seit V0.1 // V0.2 // return: number Math.min = function min() { var ergebnis = min.arguments[0]; for (var i=0; i<min.arguments.length; i++) { if (isNaN(min.arguments[i]) == true) { ergebnis = NaN; break; } else if (min.arguments[i] < ergebnis) ergebnis = min.arguments[i]; }; return ergebnis; }; // Mittelwert aus allen übergebenen Zahlen ###### // eingebaut seit V0.1 // V0.3 // return: number Math.average = function average() { var ergebnis = 0; with( average ) { for (var i=0; i<arguments.length; i++) { if (isNaN(arguments[i]) == true) { ergebnis = NaN; break; } else ergebnis += arguments[i]; } return ergebnis == NaN ? ergebnis : ergebnis / arguments.length; } }; // Test auf gerade Zahl ######################### // eingebaut seit V0.2 // V0.1 // return: bool Math.isEven = function(Num) { return isNaN(Num) == false ? Num % 2 == 0 : NaN; } // Test auf ungerade Zahl ######################### // eingebaut seit V0.2 // V0.1 // return: bool Math.isOdd = function(Num) { return isNaN(Num) == false ? Num % 2 != 0 : NaN; } // Test auf Primzahl isPrime(Num) ############### // eingebaut seit V0.1 // V0.2 // return: bool Math.isPrime = function isPrime(Num) { if (isNaN(Num) == true){ return NaN } else { if (Num % 2 == 0){ return false; } else { for (var i = 3; i <= Math.sqrt(Num); i += 2){ if (Num % i == 0){ return false; } } return true; } } } // Zahl in Primfaktoren zerlegen ################ // eingebaut seit V0.2 // basierend auf: "Prime Factorization by Ariel Goldberg, Jan. 1999" // V0.1 // return: string // e.g.: arg = 144 -> return = '2 2 2 2 3 3' Math.getFactors = function getFactors(Num) { if (isNaN(Num) == true ) { return NaN; } else { var factors = new Array() var f = 0 var num = Num var primetest = 2 while (num != 1) { var z = 0 while (z == 0) { if (num%primetest == 0) { factors[f] = primetest f = f+1 num = num/primetest z = 1 } else { if (primetest == 2) { primetest = 3 } else { if (primetest > Math.sqrt(num)) { primetest = num } else { primetest = primetest + 2 }; }; }; }; }; var ergebnis = "" for (var i=0; i < factors.length; i++) { ergebnis += " "+factors[i] }; return ergebnis; }; }; // Quadratzahl einer Zahl ####################### // eingebaut seit V0.2 // V0.1 // return: number Math.sq = function(Num) { return isNaN(Num) == false ? (Num * Num) : NaN; }; // Grad nach Bogenmaß ########################### // eingebaut seit V0.1 // V0.2 // return: number Math.deg2rad = function deg2rad(Num) { return isNaN(Num) == false ? (Math.PI * Num / 180) : NaN; }; // Bogenmaß nach Grad ########################### // eingebaut seit V0.1 // V0.2 // return: number Math.rad2deg = function rad2deg(Num) { return isNan(Num) == false ? (Num * 180 / Math.PI) : NaN; }; // Celsuis nach Fahrenheit ###################### // eingebaut seit V0.4 // V0.1 // return: number Math.c2f = function c2f(Num) { return isNaN(Num) == false ? ( 9 * Num / 5 ) + 32 : NaN; }; // Fahrenheit nach Celsius ###################### // eingebaut seit V0.4 // V0.1 // return: number Math.f2c = function f2c(Num) { return isNaN(Num) == false ? (Num -32) * 5 / 9 : NaN; };