Thursday, January 14. 2010rpn, iomem, teletype
Im letzten Maerz habe ich angekuendigt in unregelmaessigen Abstaenden ueber die kleinen Tools zu schreiben die ich mir im laufe der Zeit fuer die unterschiedlichsten Aufgaben zusammengestoepselt habe. Vor 10 Monaten ging es um einige JavaScript Programme fuer Berechnungen aus dem Bereich der Elektrotechnik. In diesem Post will ich drei Tools vorstellen die eher in den Bereich embedded bzw. hardwarenahe entwicklung gehen.
Clifford's Tools: http://svn.clifford.at/tools/trunk/ rpn und rpn64: Ueber dieses Programm und das nachfolgende habe ich 2007 schon mal in aller kuerze geblogged. Rpn ist ein einfacher rechner mit 32 bit integern fuer rechenoperationen in reverse polnish notation. rpn64 ist die version fuer 64 bit integer. Das eigentliche Highlight des Rechners ist aber nicht das rechnen an sich sondern das format seiner Ausgabe: Wenn man oft damit zu tun hat die Inhalte von irgendwechen Registern auseinanderzuklauben oder mal schnell fuer einen test das richtige wort zusammenstoepseln muss das in ein register geschrieben werden soll, dann ist dieses tool eine wertvolle hilfe. "rpn --help" erzeugt eine 4 seitige uebersicht ueber alle aufrufarten und operationen die rpn versteht. Unter anderem gehen einfache rechnungen und bitoperationen, ein uns ausgabe kann in binaer, dezimal, hexadezimal oder oktal erfolgen. Wenn es keine angabe zum ausgabeformat gibt wird das oben gezeigte verbose format verwendet. Ich verwende das tool hauptsaechlich auf der kommandozeile um bitmuster zu zerlegen. machnmal ist es aber auch praktisch um z.bsp. kleine shell scripts zu schreiben die wiederkehrende berechnung/analyse von bestimmten bitmustern wie z.bsp. statusregistern zu automatisieren. iomem: iomem ist ein tool das man auf PCs wohl besser nicht starten sollte: es erlaubt den direkten zugriff auf memory-gemappte register. in embedded systems kann das aber sehr praktisch sein, wenn man fuer einfache aufgaben nicht gleich einen treibewr schreiben muss sondern mit iomem direkt im speicher herumpfuschen kann. Um z.Bsp. das 32 bit register an der Addresse 0x12345678 auszulesen ruft man "iomem r32 0x12345678" auf. Um die vier 16 bit register an der io adresse 0x100 auszulesen wuerde man "iomem r16-port:4 0x100" ausfuehren. es gibt modi um auf registerbloecke zu lesen und zu schreiben und um mehrere lese oder schreib zugriffe auf ein fifo register zu machen. Man kann auch pollend darauf warten das ein register ein bestimmtes bitmuster annimmt. Ich empfehle aber das Programm nur zu verwenden wenn man weiss was man da tut. Es gibt einen grund warum es normalerweise kein command line tool gibt um direkt hardware register zu manipulieren.. teletype: teletype is ein raw serial terminal. mit "raw" meine ich in diesem fall, dass es nicht versucht terminal escape codes selbst zu interpretieren sonder die bytes von der seriellen schnittstelle 1:1 an das controlling tty weitergibt. ansi, vt100, und andere escape codes muss das controlling tty selbst auswerten - oder der user bekommt den schrott halt angezeigt. das hat den vorteil, dass man alle features eines X terminal windows auch beim verwenden der seriellen schnittstelle hat. Insbesondere dass bei curses basierenden serial terminals die history funktion des terminal windows verloren geht hat mich immer sehr gestoert. dafuer hat teleteype einige features die andere terminal-programme nicht haben wenn es um das automatisieren oder teilautomatisieren von ablaeufen geht. speziell so dinge wie mit kleinen shell scripts devices flashen geht damit recht leicht. Wen man das programm ohne weitere parameter startet bekommt man eine uebersicht der optionen und befehle: $ teletype --------------------------------------------------------- Usage: teletype device [speed] [escape-letter] [command(s)] Default speed is 9600 Baud. Default escape letter is 'A'. Supported speed rates: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Control Key Kombos: Ctrl-A A Send a Ctrl-A over the line Ctrl-A B Send a break over the line Ctrl-A 0 Send a a single zero byte over the line Ctrl-A H Print help message (command overview) Ctrl-A R Toggle RTS (Ready To Send) signal Ctrl-A D Toggle DTR (Data Terminal Ready) signal Ctrl-A T Toggle timestamp-mode and reset timer Ctrl-A L Set slow send mode (N chars/sec, 0=unlimited) Ctrl-A N Create network link to remote TCP/IP port Ctrl-A E Toggle local terminal echo Ctrl-A C Run a chat script (or any other command such as 'sx') Ctrl-A W Wait one second (this is usefull for scripts) Ctrl-A U Set baud rate (use with care!) Ctrl-A S Print line status Ctrl-A \ Exit without serial reset Ctrl-A X Exit with serial reset Ctrl-A . [x] Change escape key from Ctrl-A to Ctrl-[x] Commands are in the form of '-<Key><Argument>'. E.g.: teletype /dev/tts 9600 -b -l10 -c'chat -f myscript.txt' -l0 -u115200 -c'sx datafile.bin' -x --------------------------------------------------------- Wednesday, August 5. 2009Int vs. Float vs. Double
Ich erzaehle seit einiger Zeit bei allen moeglichen Gelegenheiten, dass meiner Meinung nach Scriptsprachen in Zukunft auf die verwendung von Integer typen verzichten sollten und statt dessen double precission floats als basis number-type verwenden sollten, oder zumindest bei divisionen automatisch nach double float casten sollten. Offensichtlich kann double float mit der 56 bit Mantisse ein 32 bit vollstaendig abbilden. D.h. es kaeme hier in keiner weise zu einem Verlust an genauigkeit. Das mehr an Speicherplatz verbrauch ist ebenfalls zu vernachlaessigen: das geht in aller Regel im Verwaltungsoverhead der VM unter.
Die Vorteile liegen auf der Hand: ersten muss man sich bei Sprachen mit dynamischer typisierung dann keine gedanken darueber machen, ob eine variable jetzt nun int oder float ist und wie eine divison nun definiert ist (das ist ein punkt der mich an python 2 aergert - afaik hat kommt bei python 3 bei einer division immer ein float raus, ausser man verwenden den speziellen // operator fuer integer divisionen) und andererseit macht es das VM design etwas einfacher wenn man es nur mit einem number-type zu tun hat. Das Gegenargument bleibt immer die performance. Also hab ich mal einen kleinen Test mit zwei typischen integer algorithmen gemacht: Das zaehlen von primzahlen mit einem ganz trivialen primtest und einfach nur zaehlen ohne weitere berechnungen: int testi(int n)
{
int counter = 0;
for (int i = 2; i < n; i++)
{
for (int j = 2; j < i; j++)
if (i % j == 0)
goto next_candidate;
counter++;
next_candidate:;
}
return counter;
}
int test2i(int a, int b)
{
int counter = 0;
for (int i = 0; i < a; i += b)
for (int j = 0; j < a; j += b)
counter++;
return counter;
}diese funktionen hab ich drei mal implementiert: fuer die C-typen int, float und double. bei float und double wird die modulo division mit der math.h funktion fmodf() bzw. fmod() umgesetzt. die implentierungen hab ich in jeweils eigene c-file gelegt und nochmals ein extra c-file mit einer main() implentierung erstellt. durch die verwendung jeweils eigener c-dateien soll sichergestellt werden, dass der compiler die funktion moeglichst generisch uebersetzt und nicht mit inlining und const folding in die main implementierung hineinzieht. Compiliert habe ich das ganze mit gcc 4.3.1 (-O3 -march=i386) und getestet auf meinem AMD Athlon(tm) 64 X2 Dual Core Processor 6000+. Im Test wird die erste funktion jeweils mit dem parameter 100000 und die zweite jeweils mit den parametern 40000 und 1 gestartet. Das Ergebnis des Primzahlen-Tests: Die integer variante braucht ganze 6,614 Sekunden um durchzulaufen. Die float bzw. double variante braucht 4,171 bzw. 4,172 Sekunden, ist also sogar deutchlich schneller! Das Ergebnis des Zaehlerschleifen-Tests: Die integer variante braucht 1,666 Sekuden. Die float bzw. double variante braucht 2,486 bzw. 2,450 Sekunden. Hier hat die integer variante klar die nase vorn! Fazit: Es liegen keine Welten zwischen integer und float performance. Gerade bei interpretierten Sprachen durfte sich der tatsaechliche Performanceunterschied kaum bemerkbar machen. Bei JIT compilation muesste man sich da schon mehr gedanken machen um die maximale performance rausholen zu koennen, und das erste beispiel zeigt, dass hier ein JIT compiler unter umstaenden sogar mehr performance rausholen koennte wenn integer typen (zumindest in bestimmten faellen) zu floats kompiliert werden. Der Python3 Ansatz den Divisionsoperator unabhaenig von den Operanden als floating point division zu implementieren und einen eigenen operator fuer integer divisionen einzufuehren erscheint mir aber in jedem falle sinnvoll. Die Bestrebungen in ECMA-Script 4 und Perl 6 eigene int typen einzufuehren halte ich dafuer fuer fragwuerdig, vor allem weil man davon ausgehen kann, dass bis zur umsetzung von ECMA-Script 4 und Perl 6 wahrscheinlich auch alle embedded CPUs, die maechtig genug zum hosten dieser Sprachen sind (ECMA-Script findet z.Bsp. bereits Anwendung bei den HD-DVD Menues als VM-Backend) ueber mindestens so schnelle floating point wie fixkomma einheiten verfuegen werden. Thursday, July 9. 2009
Building and installing qcad ... Posted by Clifford Wolf
in Technical at
10:27
Comments (3) Trackbacks (0) Building and installing qcad 2.0.5.0-1 community edition
Ich hatte in den letzten Wochen gleich mehrmals das recht zweifelhafte vergnuegen qcad von den Sourcen zu bauen. Offenbar hat der autor nur ein sehr eingeschraenktes interesse daran diesen prozess so problemlos wie moeglich zu gestalten. Einerseits gibt es kein "make install", andererseit gibt es einige troubles mit aktuellen gcc versionen. Letzteres ist das gleiche drama wie bei vielen anderen packages auch: die neuen aufgeraeumten C++ headers includen nicht mehr
http://www.clifford.at/writings/qcad-2.0.5.0-1-build.patch Vielleicht ist mit diesem kleinen patch ja auch noch dem einen oder anderen ausser mir geholfen... Saturday, March 14. 2009
Clifford's Tools: JavaScript ... Posted by Clifford Wolf
in Links, Private, Technical at
13:42
Comments (0) Trackbacks (0) Clifford's Tools: JavaScript Electronik Helferlein
Meinereiner wartet seit einiger Zeit ein kleines Subversion Repository mit allen moeglichen kleinen Tools, die ich fuer den Eigenbedarf entwickle. Ich habe mich nun entschlossen in unregelmaessigen Abstaenden das eine oder andere dieser Tools in meinem Blog vorzustellen.
Clifford's Tools: http://svn.clifford.at/tools/trunk/ In den letzten Monaten hatte ich wieder mal ein bischen Zeit zum elektronikbasteln und habe im Zuge der Basteleien ein paar im Webbrowser lauffaehige JavaScript Tools entwickelt um mich selbst bei der Loesung einiger haeufiger Probleme beim Designen von elektronischen Schaltungen zu unterstuetzen. RLC-Filter Calculator: http://svn.clifford.at/tools/trunk/electrotools/fcalc.html E6 Resistor Calculator: http://svn.clifford.at/tools/trunk/electrotools/rcalc.html Das naechste Tool ist mathematisch weniger interessant: Es loest eine Variation des Rucksackproblems durch einfaches Ausprobieren: Im metalab haben wir die E6 Widerstandsreihe im Sortiment. Werte die ausserhalb der E6 Reihe liegen muessen durch eine Kombination von mehreren Widerstandswerten genaehert werden. Das Programm rcalc findet zu einem gegebenen Widerstandswert jene Schaltungen die am besten geeignet sind diesen Wert zu naehern. Mit der Kombination von bis zu drei Widerstaenden laesst sich so gut wie jeder Wert so weit naehern, dass der gewuensche Wert wieder innerhalb der 1%igen Bauteiltoleranz liegt. Voltage Divider Calculator: http://svn.clifford.at/tools/trunk/electrotools/vdcalc.html Das dritte und letzte Tool das ich in diesem Blog Eintrag vorstellen moechte ist eine Variation des oben vorgestellten E6 Resistor Calculators: Als Designer elektronischer Schaltungen steht man oft vor der Aufgabe Spannungsteiler moeglichst genau dimensionieren zu muessen. Auch hier hat man nicht immer jeden belibigen Widerstandswert griffbereit sonder muss sich z.Bsp. im metalab wieder auf die E6 Reihe beschraenken. Das Programm vdcalc ermittelt die passenden Widerstandskombinationen und rechnet dann mit den Bauteiltoleranzen auch die Toleranzen fuer die Spannungen zurueck. Falls sich jemand fragen sollte: Die Toleranzen fuer V1 sind z.Bsp. dann interessant wenn man den Spannungsteiler zum parametrieren eines Festspannungsreglers verwendet der auf eine bestimmte Spannung V2 regelt. Thursday, January 1. 2009
Papers zu Lock-Free und Wait-Free ... Posted by Clifford Wolf
in Technical at
22:29
Comments (2) Trackbacks (0) Papers zu Lock-Free und Wait-Free Algorithmen
Herlihy, M. Wait-free Synchronization. ACM Transactions on Programming Languages and Systems 13, 1 (1991), 124-149.
Andrei Alexandrescu. Lock-Free Data Structures. December 17, 2007. M. Herlihy and J. Wing. Linearizability: A Correctness Condition for Concurrent Objects. ACM Transactions on Programming Languages and Systems, Vol. 12, No. 3, July 1990, Pages 463-492. B.N. Bershad. Practical Considerations for Non-Blocking Concurrent Objects. Proceedings of the 13th International Conference on Distributed Computing Systems (DCS), pp. 264-273, May 1993. Also published as a Carnegie-Mellon University Technical Report CMU-CS-91-183, October 1991. Monday, December 29. 2008
Windows Software Hitliste Posted by Clifford Wolf
in Technical at
07:10
Comments (13) Trackbacks (0) Windows Software Hitliste
Ich installiere gerade die neue CAD Station im Metalab. Aus diesem Anlass poste ich hier mal eine Liste von Software die ich normalerweise auf einem Windows System installiere damit es fuer mich verwendbar wird:
Firefox und diverse Add-ons:
Unix Tools auf Windows:
Connectivity mit UNIX:
Der uebliche Krempel von Adobe:
Subversion:
Kleine Tools die man haben will:
Weitere Software (bei Bedarf):
Wissenschaft und Technik (bei Bedarf):
Last but not least meine reinstall scripte um mit Dualboot aus Linux Images vom Windows schnell und bequem erzeugen und rueckspielen zu koennen: Fuer Hinweise zu weiterer Free- oder Free-as-in-free-beer-Software, die Windows etwas brauchbarer oder leichter zu ertragen macht bin ich natuerlich dankbar. Comments zu diesem Blog-Eintrag sind ein geeigneter Ort fuer soche Hinweise.. Wednesday, September 17. 2008
ffmpeg: video via dv1394 und audio ... Posted by Clifford Wolf
in Technical at
15:10
Comments (3) Trackbacks (0) ffmpeg: video via dv1394 und audio via OSS
Schoen langsam verstehe ich, wie das bei ffmpeg so rennt: Alle Infos die man zum benutzen so braucht findet man eh im Sourcecode, und wenn es dann auch noch wie angepriessen funktionieren soll dann muss man halt ein bischen patchen. Also ich persoenlich mag so etwas ja sehr gerne: bis auf die Sache mit der Schokolade ein Programm wie ein Ueberraschungsei. Nur ob alle Anwender so denken?
Wie dem auch sei: Mit dem oben verlinkten Patch tut ffmpeg endlich so wie ich mir das von Anfang an erwartet habe. ffmpeg -f dv -i /dev/dv1394/0 -f oss -i /dev/sound/dsp -vb 1000000 -y -map 0.0 -map 1.0 demo.avi Wednesday, September 17. 2008
Linuxwochenende 2008: 20./21. September Posted by Clifford Wolf
in Events, Private, Technical at
03:01
Comments (0) Trackbacks (0) Linuxwochenende 2008: 20./21. September
Kommenden Samstag und Sonntag findet im Wiener Metalab das Linuxwochenende 2008 statt. Programm gibt es auf der Homepage:
Wenn folgendes so hinhaut, wie ich mir das erhoffe, wird es auch einen Videomitschnitt mit Sound direkt vom Speaker-Mikrophon geben, obwohl meine DV Kamera keinen Audio-Eingang hat. Ein kleiner Job fuer FFMPEG - aber ein grosser Schritt fuer die semiautomatisierte Aufzeichnung von Vortraegen im Metalab. ffmpeg \ -f dv -i <( dvgrab -noavc -format raw - 2> dvgrab.err ) \ -itsoffset 0.7 -f s16le -ar 44100 -ac 1 -i <( arecord -f S16_LE -c1 -r44100 - 2> arecord.err ) \ -vb 1000000 -y -map 0.0 -map 1.0 demo.avi Thursday, September 11. 2008
Vortraege in Graz - CMOS und GIT Posted by Clifford Wolf
in Events, Private, Technical at
10:11
Comment (1) Trackbacks (0) Vortraege in Graz - CMOS und GIT
Heute und morgen halte ich Vortraege auf der FH-Joanneum in Graz.
(Offen fuer alle die es interessiert und bei freiem Eintritt.) Donnerstag 11. September, 15:00: Vom (MOSFET) Transistor zum (CMOS) Gatter Freitag 12. September, 14:00: Sourcecode Management mit GIT Es wird Videoaufzeichnungen geben. Thursday, June 26. 2008
Sourcecode Management mit GIT Posted by Clifford Wolf
in Technical at
09:32
Comments (4) Trackbacks (0) Sourcecode Management mit GIT
Mein gestriger GIT Vortrag im Metalab war trotz Konkurrenz durch die UEFA sehr gut besucht. Etwa die Haelfte derer die gekommen waren haben die vollen 4 1/2 Stunden durchgehalten..
Die Folien sind wie ueblich nun auch online: http://www.clifford.at/papers/2008/git/ Das mit der Videoaufzeichnung hat leider nicht geklappt. Einige Leute auf der LUGA Liste hatten sich ein Video gewuenscht und Rhonda hat mir ausgerichtet, dass Mika aus Graz den Vortrag gerne als Video gehabt haette.. Eine aehnliche Situation gab es auch schon mit meinem CMOS Einfuehrungsvortrag im letzten Jahr. Ein Angebot nach Graz: Ich halte an einem Wochenende beide Vortraege in einer Grazer Location und ihr macht eine Videoaufzeichnung fuer diejenigen die es weder in Graz noch in Wien geschafft haben die Vortraege zu besuchen. Thursday, April 3. 2008
Xilinx ISE WebPACK 10.1 - Isim FAIL Posted by Clifford Wolf
in Technical at
23:30
Comments (0) Trackbacks (0) Xilinx ISE WebPACK 10.1 - Isim FAIL
Xilinx hat vor ein paar Tagen die Version 10.1 ihrer Entwicklungsumgebung ISE herausgebracht, zu der ich mir auch gleich die gratis-Version, das ISE WebPACK angesehen habe. Ganz konkret hat mich der Verilog+VHDL Simulator "ISIM" interessiert, den ich seit der Version 9.2 von benutze. Bei der alten Version gab es noch einige Kinderkrankheiten. Zum Beispiel bin ich ueber einige noch nicht implementierte Sprachfeatures gestolpert, habe es mehrmals geschafft die Simulation zum Segfaulten zu bringen und in einem Fall habe ich sogar unsinnige Simulationsergebnisse erhalten. Dennoch war ich mit der 9.2er Version von "ISIM" im allgemeinen recht zufrieden, habe mir aber von der neuen Version einige Verbesserungen erhofft. Der erste Eindruck von der neuen Version laesst aber schlimmes befuerchten:
Ich wollte ISIM gleich mit einem meiner aktuellen Projekte testen. In diesem Test-Projekt kommen einige Block Ram Primitives (BRAM18SDP und BRAM36) vor, welche mit den INIT_* und INITP_* Parametern mit Daten vorinitialisiert werden. Waehrend die alte ISIM Version fuer beide Primitives jeweils nur einen Augenblick zur Uebersetzung gebraucht hat, braucht die neue ISIM Version fuer jede Instanz eines der Primitives etwa 5 Minuten. Daheinter steht offenbar eine gut gemeinte Performance-Optimierung, die zur Folge hat, dass ein Verilog Modul fuer jede Kombination von Parametern neu uebersetzt werden muss. Diese Uebersetzung funktioniert ueberigens so, dass der HDL-Code in C-Code umgewandelt wird, welcher dann mit einem von Xilinx mitgeliefertem GCC in Objektcode compiliert wird. Ein Vorgehensweise, die ich grundsaetzlich fuer schlau halte. Nur geht da irgend etwas schief und die C-Files fuer meine Block Ram Primitives werden etwas ueber 4MB gross. Das zu compilieren braucht eben seine Zeit - und auf ein mal dauert die Simulation deutlich laenger als Synthese, Mapping, Place&Route und In-Circuit-Test gemeinsam. Massive Fail. "Verschlimmbessert" sagt man in der Regel zu so etwas. Ich hab auf meiner Workstation jetzt wieder ISE 9.2 im Einsatz.. Saturday, January 26. 2008
Was muss ein Taschenrechner koennen? ... Posted by Clifford Wolf
in Private, Technical at
20:29
Comments (4) Trackbacks (0) Was muss ein Taschenrechner koennen? (Teil 2)
So leicht gebe ich ja nicht auf. Also habe ich mir nach meiner entteuschung mit dem TI-30XS einen CASIO fx-991ES gekauft. Laut CASIO Website sollte dieser all die Features bieten die ich mir von einem 25 Euro Taschenrechner so erwarten wuerde - und noch ein bischen mehr.
Zunachst: Der TI-30XS sieht einfach besser aus als der CASIO fx0991ES. Das CASIO Design erinnert stark an die 80er und wirkt heute etwas billig. Bevor man den Rechner einschaltet wuerde man kein Matrix-Display sonder 7-Segment Anzeigen erwarten. Ausserdem fuehlen sich die Tasten beim TI-30XS um einiges besser an als beim fx-991ES.Bei den Features aber ueberzeugt das Model von CASIO, wenn auch in einigen Bereichen die Realitaet hinter den Erwartungen zurueckbleibt. So kann der CASIO z.Bsp. komplexe Arithmetik. Aber nur solange die komplexen Zahlen nicht in einem Exponenten stehen. Die Eulersche Identitaet kann man mit dem CASIO also auch noch nicht berechnen. Die Eingabe von Termen ist beim CASIO besser implementiert - so kann man z.Bsp. recht einfach Zeichen einfuegen (beim TI muss man dazu vor jedem Zeichen erneut die 'Insert' Taste druecken) und man kann auch leicht bestehende Teilausdruecke z.bsp. in eine Wurzel einschliessen. Sehr Schoen: Der CASIO kann Integralrechnungen (mit der Gauss-Kronrod-Method) und Differenziahlrechnungen (mittlere Differenznaeherung) numerisch loesen. Auch binaere oktale und hexadezimale Zahlen versteht der fx-991ES und er hat funktionen fuer boolsche Arithmetik. Ausserdem hat der CASIO besseren Support fuer statistische Analysen, kann einige Standardgleichungen loesen (lineare simultangleichung mit zwei unbekannten, lineare simultangleichung mit drei unbekannten, quadratische gleichung und kubische gleichung) und beherscht Matrixrechnungen. Ich habe keine Funktion gefunden die beim TI-30XS vorhanden waere, die der fx-991ES aber nicht anbietet. Umgekehrt hat CASIO seinem 25 Euro Model einiges gegoennt was Texas Instruments den besseren Modellen vorbehallt. Auch eine atan2 Funktion habe ich gefunden - beim CASIO nennt man sie halt Pol() (umrechnen von kartesische Koordinaten in Polarkoordinaten). Ein bischen verwirrend: Der CASIO hat unterschiedliche Betriebsmodi in denen jeweils gewisse Features ein, andere dafuer ausgeblendet werden. Natuerlich ist es nicht moeglich zwischen den modi einfach so zu wechseln. Daher ist es z.bsp. nicht moeglich eine komplexe Zahl in binaerschreibweise einzugeben, den komplexe Zahlen gibt es nur im CMPLX Modus und baerzahlen nur im BASE-N Modus. In der Regel wird man diese Einschraenkung aber verkraften koennen. Wer sich nicht am Design des fx-991ES sowie seinen etwas gewoehnungsbeduerftigen Tasten stoert dem kann ich das Geraet zumindes im vergleich zum TI-30XS sehr empfehlen. Sunday, January 20. 2008
Was muss ein Taschenrechner koennen? Posted by Clifford Wolf
in Private, Technical at
22:49
Comment (1) Trackback (1) Was muss ein Taschenrechner koennen? Anfang der Woche hab ich mir einen Taschenrechner gekauft. Die letzten Jahre musste fuer den Job 'bc' bzw. 'octave' herhalten. Da ich dezeit aber wieder Mathe-Buecher lese, mich fuer die Beispiele nicht immer vor den PC setzen will und der Taschenrechner in meinem Handy nicht weiss was π ist bin ich zum Saturn gegangen und hab mir den TI-30XS gekauft.Allzu viel hat das Geraet ja nicht mit dem TI-30 zu tun den ich noch aus der Schulzeit zu kennen glaube. Am grafikfaehigen Display werden die Formeln so angezeigt wie man sie schreiben wuerde: mit schoenen Bruchstrichen, Exponenten, Wurzeln, ein wirklich netter Formeleditor. Man kann also davon ausgehen, dass die CPU mehr mit der Darstellung als mit der eigentlichen Berechnung der Terme zu tun hat. Umso aergerlicher ist da, dass der TI-30XS nichts von komplexen Zahlen weiss. Eine kurze Recherche auf der TI homepage hat ergeben, dass man dafuer ein vielfaches des Preises fuer den TI-30XS (der etwa 25,- € kostet) ausgeben muss. Dafuer bekommt man dann aber auch umfangreichere numerische Funktionen, kann Funktionen plotten, usw. Solche Features haette ich ja von einem einfachen Taschenrechner ja auch nicht erwartet - aber das die Wurzel von -1 in einem "DOMAIN ERROR" resultiert? Da haetten sie der Firmware des Rechners schon etwas mehr zugestehen koennen.. Auch eine atan2 Funktion sucht man vergeblich. Klar kann man das auch haendisch unter zuhilfenahme des "normalen" atan erledigen. Man kann auch die komplexen zahlen 'per hand' verarbeiten - nur schoen ist das halt nicht. Dafuer hat der Rechner Funktionen fuer einfache Wahrscheinlichkeitsrechnungen, verarbeitung von tabellarischen Daten sowie statistischer Analyse. Da finde ich den fehlenden Support fuer i ein wenig unverhaeltnismaessig. Zum Beispiel ueber der x^-1 Taste waere auch noch Platz fuer das Symbol gewesen.. Mal sehen - vielleicht wird der naechste Taschenrechner den ich mir kaufe ein HP. Fuer Einkauftipps waere ich dankbar.. Vielleicht wird es aber auch mal Zeit fuer einen freien Taschenrechner. Man koennte ja mal damit anfangen ein GUI-Programm zu schreiben das ein bischen mehr kann als diese laecherlichen Taschenrechner-Programme die bei den Desktop-Environments dabei sind, ohne gleich einen weiteren Matlab-Klon zu schreiben. Die Software dann auf ein kleines embedded System zu portieren sollte ja nicht so schwer sein, wenn das von vornherein im Programmdesign beruecksichtigt wird. PS: Die Verpackung des TI-30XS verspricht auch "algebraische Funktionen". Was genau damit gemeint ist habe ich jedoch noch nicht rausgefunden. Die Bedienungsanleitung schweigt sich diesbezueglichg ebenfalls aus. Sunday, January 6. 2008
Entladung.net (Unser Videopodcast) ... Posted by Clifford Wolf
in Buch und Film, Private, Technical at
16:32
Comments (0) Trackbacks (0) Entladung.net (Unser Videopodcast) ist online
Das Videopodcast von Astrid und mir, entladung.net, ist vorgestern abend mit den ersten beiden Episoden offiziell online gegangen:
Unschwer zu erkennen: Es geht um Elektronik. Zwei weitere Episoden sind in Vorbereitung (eine ueber Widerstandsschaltungen und eine ueber Dioden) und viele weitere sind geplant. Tuesday, December 11. 2007
Texvc (Mediawiki Formel Konverter ... Posted by Clifford Wolf
in Technical at
20:26
Comments (0) Trackbacks (0) Texvc (Mediawiki Formel Konverter Script)
Es stand schon laenger auf meiner todo-liste: mir mal texvc ansehen, das Ocaml programm das Mediawiki benutzt um Formeln mit TeX zu rendern:
rocket emerge ocaml Kleine demo applikation mit perl (texvc_inplace.pl): #!/usr/bin/perl -pi Rendert PNGs fuer <img texvc="..."/> tags und fuegt die entsprechenden src="..." attribute ein: $ cat demo.html Nice. |
Calendar
QuicksearchCategoriesSyndicate This BlogBlog Administration |
||||||||||||||||||||||||||||||||||||||||||
