BIRPN 0.2


Meine kleine BigInteger-Bibliothek BIRPN für Java, die ich schon hier erwähnt hatte, hat sich gemausert. Das coolste neue Feature sind Metafunktionen, und eigene Operationen kann man auch einbauen. Da ich mit dem Funktionsumfang recht zufrieden bin, habe ich mir erst einmal einen Feature-Stop verordnet. Bei der nächsten Version möchte ich die Organisation, Dokumentation und JUnit-Abdeckung verbessern. Aber zum Herumspielen reicht die aktuelle Version allemal.

Kleines Beispiel gefällig? Wie findet man alle Primzahlen der Form p=n4+1 kleiner 100000000?

System.out.println(results("1 99 .. 4 applyRight:^ foreach:++ filter:isPrime"));
//--> [2, 17, 257, 1297, 65537, 160001, 331777, 614657 u.s.w.

Zuerst erzeuge ich mit einer Range-Operation eine Liste von 1 bis 99, dann hänge ich eine 4 an, dann führe ich die Operation „Potenzieren“ für alle anderen Elemente mit 4 als rechtem Operanden aus, dann erhöhe ich jedes Element um eins und behalte schließlich nur die Primzahlen. Um die gleiche Funktionalität ohne BIRPN zu realisieren, müsste man schreiben:

List<BigInteger> list = new ArrayList<BigInteger>();
for(int i = 1; i < 100; i++) {
    BigInteger p = BigInteger.valueOf(i).pow(4).add(BigInteger.ONE);
    if(p.isProbablePrime(10)) {
        list.add(p);
    }
}
System.out.println(list);

Ich denke, das spricht für sich, auch wenn BIRPN etwas weniger typsicher ist und ein, zwei Millisekunden länger braucht.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s