package hjelpeklasser;
public class Matte
{
private Matte() {}
public static double log2(double x)
{
return Math.log(x)/Math.log(2);
}
public static int ceilLog2(int n)
{
if (n < 1) throw new IllegalArgumentException
("Logaritmen er ikke definert for n = " + n);
return 32 - Integer.numberOfLeadingZeros(n - 1);
}
public static int floorLog2(int n)
{
if (n < 1) throw new IllegalArgumentException
("Logaritmen er ikke definert for n = " + n);
return 31 - Integer.numberOfLeadingZeros(n);
}
public static double harmonisk(int n)
{
double sum = 0.0;
for (int i = 1; i <= n; i++) sum += 1.0/i;
return sum;
}
public static double euler(int n)
{
return harmonisk(n) - Math.log(n);
}
public static int fakultet(int n)
{
int fakultet = 1;
for (int k = 2; k <= n; k++) fakultet *= k;
return fakultet;
}
}