Biblioteka do kalkulatora

Biblioteka do kalkulatora
lipkerson
  • Rejestracja: dni
  • Ostatnio: dni
1

Witam

Piszę dość specyficzny kalkulator - nie będę się tutaj rozpisywał nad jego funkcjonalnością. Ważne jest, że precyzja to podstawa: w działaniach liczy się n-te miejsce po przecinku a taką liczbę będe musiał jeszcze pierwiastkować itp.
Jest klasa BigDecimal i teraz pytanie czy ona mi to zapewni?
Jest metoda devide i mniemam, że będzie ok ale pierwiastek?
Konwersja do double to nieporozumienie.
Znalazłem takie coś:

Kopiuj
 
public static BigDecimal sqrt(BigDecimal n, int s) {
    BigDecimal TWO = BigDecimal.valueOf(2);

    // Obtain the first approximation
    BigDecimal x = n
        .divide(BigDecimal.valueOf(3), s, BigDecimal.ROUND_DOWN);
    BigDecimal lastX = BigDecimal.valueOf(0);

    // Proceed through 50 iterations
    for (int i = 0; i < 50; i++) {
      x = n.add(x.multiply(x)).divide(x.multiply(TWO), s,
          BigDecimal.ROUND_DOWN);
      if (x.compareTo(lastX) == 0)
        break;
      lastX = x;
    }
    return x;
  }

Co myślicie? Dodam, że jeszcze też muszę logarytmowac takie niewdzięczne liczby - jakieś pomysły czy zostaje mi tylko implementacja samemu jakiegoś algorytmu numerycznego.

Inne pytanie - kiedys na tym forum była opisana biblioteka, która obsługiwała sama kolejnosc zadan arytmetycznych - również nawiasy itp. rzeczy. Pamięta ktoś?

Za wszelkie podpowiedzi będe naprawdę wdzięczny!

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6823
1

Uderz do CERN > http://acs.lbl.gov/software/colt/

Z colta trochę korzystałem na studiach i był całkiem fajny. Tam zresztą jest więcej tego typu softu.

lipkerson
  • Rejestracja: dni
  • Ostatnio: dni
0

Znalazłem kilka prostych i fajnych parserów, ale najbardziej mnie zaciekawił bardziej skomplikowanuy ANTLR. Można robić na nim grafy - działania są rozpisywane na poziomu i pomyśałem że dzięki temu można by zrobić wielowątkowe przetwarzanie działań.

Znalazłem fajny link opisujący gramatykę dla operatorów:
http://www.mymindleaks.com/article/writing-expression-parser-using-antlr.html

Tylko zastanawiam się jak zrobić funkcje : ln, cos itp (są jednoelementowe).
Próbował ktoś to ugryźć?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.