#######################################################################
>>>NICHT<<< GANZZAHLIGE Langzahlrechnung
#######################################################################
 
(1) ADD-IN
==========
 
alle Langzahlfunktionen findest du unter

http://www.rendar.de/excel/langezahlen/lr.xla (ca 74 kB)
 
(2) enthaltene BENUTZERDEFINIERTE FUNKTIONEN (UDF's)
====================================================
 
(a) GANZZAHLIG
---------------
x und y seien ganzzahlig und positiv oder negativ
Funktion ------> berechnet
lz_add(x;y) x+y
lz_sub(x;y) x-y
lz_mult(x;y)
lz_multi(x;y)
x*y
x*y (nur bei großen y ein wenig schneller als lz_mult)
lz_div(x;y) x\y
lz_div(x;y;1)
>>alternativ<<
lz_mod(x;y)
((x/y) - (x\y))*y (Rest der ganzzahligen Division x durch y)
die globale Variable x_div enthält hierbei das Ergebnis der
ganzzahligen Division x\y
lz_abs(x) Abx(x) den Absolutwert von x
lz_sum(PA) identisch zur Sum() Function in Excel
(aber nur für ganzzahlige Werte)
PA ist ein ParamArray (fast) beliebiger Länge
lz_DezHex(x) berechnet für eine beliebig lange Dezimalzahl x
die zugehörige Hexadezimalzahl
lz_DezBin(x) dezimal in binär (nutzt intern lz_DezHex)
lz_DezBin2(x) dezimal in binär (nutzt intern lz_DezOct)
lz_DezOct(x) dezimal in oktal
lz_BinDez(x) binär in dezimal
lz_OctDez(x) oktal in dezimal
lz_HexDez(x) hexal in dezimal
lz_DezIn(x,b)
lz_InDez(x,b)
wandelt eine Dezimalzahl in eine Zahl zur Basis b
wandelt eine Zahl zur Basis b zurück in eine Dezimalzahl
die letzten beiden Funktionen benötigen einen GENÜGEND LANGEN String mit
den gewünschten Umwandlungszeichen in der gültigen Reihenfolge z.B.
Basis b<=16 benötigt z.B. normalerweise den uw_string (globale Variable)
"0123456789ABCDEF". Einzige Bedingung für diesen String ist, daß
len(uw_string)>= b ist.
uw_string ist vorbelegt mit "0123456789ABCDEFghijklmnopqrstuvwxyz"
x und y seien Binärzahlen (Strings der Form 101011...,
bzw Ergebnisse der Funktion lz_DezBin()
lz_BinAND(x,y) x AND y
lz_BinOr(x,y) x OR y
lz_BinXOR(x,y) x XOR y
der Optionale Parameter m = min_bits dient hier nur
als minimale Bezugsgröße für die Stringlänge
wenn x und/oder y weniger als min_bits Stellen haben,
dann werden die "höherwertigen bits" mit "0" aufgefüllt
ist x oder y "länger" als min_bits, dann wird
max(len(x),len(y)) als Bezugsgröße verwendet
ist min_bits NICHT angegeben, dann wird default =16 (Stellen)
Verwendet! d.h. m(default)=16 bedeutet "0000000000000000"
lz_BinNOR(x,y,m) NOT( (x OR y) OR m )
lz_Bin NOT(x,m) NOT( x OR m)
 
Erweiterungen 1.5.2002 und 15.8.2009
--------------------------------------
optionale Parameter a,n und b
a = Anzahl Bits die berücksichtigt werden sollen
ist a=0, dann wird a = Länge der Binärdarstellung der Zahl x gesetzt
der Defaultwert für a = 16
n = Anzahl der verschobenen/rotierten Bits
der Defaultwert für n = 1
b = Basis der Übergabezahl x
der Defaultwert für b = 10
das Ergebnis der Operation wird ebenfalls in der Basis b ausgegeben
lz_shl(x,a,n,b) bitweises ShiftLeft
lz_shr(x,a,n,b) bitweises ShiftRight
lz_rol(x,a,n,b) bitweises RotateLeft
lz_ror(x,a,n,b) bitweises RotateRight
 
(b) RATIONALE ZAHLEN
--------------------
>x und y seien positiv oder negativ mit oder ohne Nachkommaanteil
und die Optionalen Parameter:
n = angezeigte Nachkommastellen, wenn n NICHT angegeben wird, dann
werden nur 2 (=default) Nachkommastellen des Ergebnisses angezeigt!
g = die Division rechnet bis auf g Stellen nach dem Komma (ist nicht
vom Parameter n abhängig!) Wird g nicht angegeben, dann werden 25
(=default) Nachkommastellen berechnet.
Funktion ------> berechnet
lr_add(x;y;n) x+y
lr_sub(x;y;n) x-y
lr_mult(x;y;n) x*y
lr_div(x;y;n;g) x/y
lr_zpow(x;z;n;g) x^z wobei z positiv oder negativ ganzzahlig sein kann (Fkt. vom 15.8.2009)
lr_abs(x) Abx(x) den Absolutwert von x
lr_sum(PA) identisch zur Sum() Function in Excel
PA ist ein ParamArray (fast) beliebiger Länge
 
(3) KONTAKT
===========
 
Code-/Programmfehler/Verbesserungsvorschläge bitte per email an:

mailto:Wolf.W.Radzinski@gmx.de

subject/Betreff: Langzahlrechnung in Excel
Bitte keine XLS Dateien (zu groß!), sondern lieber Code etc. per TXT-File!
 
(4) ERWEITERUNGEN
=================
 
wissenschaftliche Darstellung:
-----------------------------
Wer Lust hat, kann versuchen die Funktionen auf E^x Format zu trimmen.
Sollte sich einer daran wagen, möchte ich bitten, mir den Code per TXT-File
zukommen zu lassen. TIA!
 
Info:
-----
i)
wie wird in den obigen Funktionen gerechnet?
lz_add ... einfache stellenweise Addition mit Übertrag

lz_sub ... Subtraktion durch "Addition des 9er Komplements"

z.B. 25-813 = 025+[186] = [211] = -788
813-25 = 813+[974] = 1[787]= 787+1 = 788

lz_mult ... benutzt die Additionsfunktion lz_add zur Berechnung

lz_div ... benutzt die Subtraktionsfunktion lz_sub

d.h. eigentlich werden alle 4 Grundrechenarten mit der
einfachen Additionfunktion lz_add berechnet.
ii)
"VORSICHT" die Umwandlung SEHR LANGER Zahlen kann ziemlich
viel ZEIT kosten! Theoretisch bricht die Umwandlung erst ab
der maximal zulässingen Stringlänge in Excel 97 ab, dies hab
ich allerdings "aus verständlichen Gründen" nicht getestet
iii)
Beispiel ... UNTERSCHIEDE zwischen Excel(rot) und dem Add-In(grün)
http://www.rendar.de/lzr_u.htm