22 résultats trouvés

par currybleu
14 févr. 2013 08:31
Forum : Tous les Pockets
Sujet : Misez P'tit, Optimisez - N°32 (factorielle)
Réponses : 115
Vues : 96858

Re: Misez P'tit, Optimisez - N°32 (factorielle)

C.Ret a écrit : ARRY-> 1E7 ACarry // Reporte les retenues et agrandit si nécessaire le vecteur résultat
hello,
A quoi correspond cette fonction ACarry? (autre programme RPL ou library?)
par currybleu
13 févr. 2013 21:03
Forum : Présentation
Sujet : Présentation: Utilisateur de HP28S et HP50G
Réponses : 21
Vues : 13195

Re: Présentation: Utilisateur de HP28S et HP50G

Hello,

J'ai jeté un coup d'oeil sur la formule de stirling. elle a l'avantage d'être immédiate (pas de boucle) mais elle est vraiment trop approximative. La formule que j'utilise ou plutot celle que propose Paul donne une valeur bien plus précise. En tout cas, merci pour cette suggestion et merci encore à vous tous pour votre accueil :-)

Pour les sauvegardes, merci de ta proposition, mais j'utilise le port infra rouge de la HP28S en emission avec la fonction PRINT et la HP50G récupere par l'infra rouge en entrée..
En fait je ne peut que sortir depuis la hp28S. j'avais fait ca il y a déjà longtemps avec une HP48SS. je n'ai pas re-testé avec la HP50G mais je pense que ca doit être encore possible
Sinon, je suis de Lyon :-)
par currybleu
13 févr. 2013 20:53
Forum : Tous les Pockets
Sujet : [HP28S] Trouver la fraction de n'importe quel nombre...
Réponses : 12
Vues : 8401

[HP28S] Trouver la fraction de n'importe quel nombre...

... y compris des nombres complexes, des racines carrées, etc...J'ai du écrire ce programme il y a une bonne vingtaine d'année mais je n'ai pas trouvé mieux, sur aucune calculatrice.
Ce programme n'a jamais été partagé car internet n'existait pas et puis je l'ai oublié. Pour ceux que ca intéresse, je le mets donc à dispo dans le but de l'optimiser et éventuellement qu'il puisse être porté sur d'autres calculatrices..
Pour le moment il fonctionne parfaitement sur HP28S mais pas sur sur HP50G (problème avec les fonction EXGET, OBJ-> à redéfinir) . Peut-être le trouverez-vous suffisamment intéressant pour le porter sur d'autres calculatrices...
Ce forum m'a l'air parfait pour ça :-)

Tout d'abord ce programme est divisé en 3 parties.
1- REDUC: ce programme permet de trouver la fraction de nombres tels que:
- 6.5 (13/2)
- 6.3333333333333333 (19/3)
- 3.14285714286 (22/7)
- ou même 6.456456456456456456 (2150/333)
bien sur il réduit également toute fraction au maximum

2- RACINE/ Ce programme permet de trouver les fractions des nombres ci-dessus en tenant compte de la racine carrée:
par exemple:
- 1.77281052086 donnera racine(22/7)
- 6.34227616011 donnera 32/9*racine(35/11)


3- FRAC. il s'agit du programme principal qui utilise les 2 autres. Il permet de trouver la fraction d'un nombre complexe, de la racine carrée d'un nombre complexe, d'une matrice, etc..
par exemple
- (1.3333333333333333+4.5i)/(7+6.4i)=0.423892100192+0.255298651253i
le resultat de FRAC donnera 220/519 + 265/1038i

Bien sûr, ca ne marche pas à tous les coups, mais l'avantage de ce programme, c'est que s'i ne trouve pas, le programme le sait tout de suite et ne part pas dans des calculs interminables.

Allons-y..


REDUC

Code : Tout sélectionner

<< DUP ->NUM 1.E12 * 1.E12 -> o n m
  << n ABS m
    DO SWAP OVER MOD
    UNTIL DUP 10000000 / IP NOT
    END DROP n OVER / IP DUP ABS m 4 ROLL / IP DUP
    IF 1 <>
    THEN 10 SF R->I ->STR "'" ROT R->I ->STR + "/" + SWAP + STR-> SWAP SIGN * DUP
      IF ->NUM o ->NUM - ABS .000000001 >
      THEN DROP o
      END
    ELSE DROP2
    END
  >>
>>
RACINE

Code : Tout sélectionner

<< EVAL
  IF REDUC DUP DUP TYPE SWAP DUP IP SAME OR NOT
  THEN
    << DUP DUP
      IF 1 <>
      THEN \/ IP 1 + -> a g
        << g 2
          FOR X
            IF a X SQ / DUP DUP IP ==
            THEN DUP a SWAP / \/ SWAP 0 'X' STO
            ELSE DROP
              IF X 2 <=
              THEN 1 a
              END
            END -1
          STEP
        >>
      END
    >> -> raci
    << DUP SIGN SWAP DUP SQ REDUC DUP DUP ->STR
      IF "." POS SWAP EVAL NOT OR NOT
      THEN SWAP DROP DUP
        IF TYPE NOT OVER DUP IP SAME OR
        THEN 1
        ELSE DUP 1 EXGET SWAP 3 EXGET
        END -> s n d
        << n raci EVAL d raci EVAL 4 ROLL ROT / REDUC 3 ROLLD / REDUC DUP ->STR -> p q
          << "'\/"
            IF p TYPE
            THEN "(" q 2 q SIZE 1 - SUB + ")" +
            ELSE q
            END + STR-> * s
          >>
        >>
      ELSE DROP
      END *
    >>
  END
>>
FRAC

Code : Tout sélectionner

<<
  IF 1 FS?
  THEN DUP 35 CF EVAL 35 SF
    IF TYPE NOT
    THEN RACINE
    ELSE
      IF DUP TYPE 1 ==
      THEN 10 SF DUP RE RACINE SWAP IM RACINE 'i' * +
      ELSE
        IF DUP TYPE DUP 3 == SWAP 4 == OR
        THEN ->STR "" SWAP
          DO DUP " " POS DUP2 1 SWAP SUB 3 ROLLD 1 + 999 SUB SWAP
            IFERR STR->
            THEN
            ELSE 10 CF FRAC ->STR
              IF 1 FC?
              THEN DUP DUP
                IF TYPE
                THEN SIZE 1
                ELSE SIZE 1 - 2
                END SWAP SUB
              END " " +
            END ROT SWAP + SWAP
          UNTIL DUP SIZE 2 <=
          END +
        ELSE
          IF DUP TYPE 9 ==
          THEN -> a
            << a 1 1 a SIZE
              FOR X -> y
                << a X EXGET
                  IF DUP TYPE 2 <
                  THEN FRAC DUP
                    IF TYPE 2 <
                    THEN 1
                    ELSE DUP SIZE
                    END -> s
                    << y SWAP EXSUB y s +
                    >>
                  ELSE DROP y 1 +
                  END
                >>
              NEXT
            >> DROP
          END
        END
      END
    END
  END
>>
Caractères à remplacer:
<> à remplacer par SHIFT = (différent)
\/ à remplacer par le caractere racine carrée
<= à remplacer par le caractère inférieur ou égal


N'hesitez pas si vous avez des questions, ça me fera plaisir de replonger dans ce code pour le porter sur HP50G par exemple
par currybleu
13 févr. 2013 19:16
Forum : Présentation
Sujet : Présentation: Utilisateur de HP28S et HP50G
Réponses : 21
Vues : 13195

Re: Présentation: Utilisateur de HP28S et HP50G

Bonjour et merci à vous tous pour votre accueil.

Oui, 1986.. ca ne rajeuni personne.
Pour tout dire, j'ai découvert la HP28C par un copain de classe qui m'a tellement pris la tête avec que j'ai décidé de casser ma tirelire pour m'en acheter une. Le temps de réunir, les fonds, pleurer chez mes grands parents.. la 28S sortait avec ses 32K et c'est presque par hasard que j'ai eu celle là plutot que la 28C!
Depuis, ma HP est bourrée de petits programmes que je conserve en souvenir d'une époque passée. A la maison, personne ne comprends que je puisse l'utiliser encore et mon fils me regarde bizarrement du haut de sa casio "collège".. trop de la balle.
enfin.. voilà.

Sinon, ma dernière acquisition sur Ebay; une magnifique HP28S jamais servie pour 61€!! en remplacement de ma toute vieille!!
http://cgi.ebay.fr/ws/eBayISAPI.dll?Vie ... 1439.l2649
par currybleu
13 févr. 2013 18:54
Forum : Tous les Pockets
Sujet : Misez P'tit, Optimisez - N°32 (factorielle)
Réponses : 115
Vues : 96858

Re: Misez P'tit, Optimisez - N°32 (factorielle)

Hello,

L'arrondi me semble nécessaire car par exemple, avec 10! la conversion LOG/ALOG donne un resultat tres approximatif:
3.62879999994E6 au lieu de 3.6288E6
Pariel pour 11, 12, etc...
Maintenant, au vu de la précision de la 28S ou 50G, 9 RND semble plus judicieux.

PS: je débarque sur ce forum.. que veut dire mpo?
par currybleu
13 févr. 2013 18:00
Forum : Présentation
Sujet : Présentation: Utilisateur de HP28S et HP50G
Réponses : 21
Vues : 13195

Présentation: Utilisateur de HP28S et HP50G

Hello,
La HP28S m'a accompagné tout au long de ma vie. J'ai eu la chance d'en posseder une l'année de sa sortie. Je reste fan de cette calculatrice si particulière, incompréhensible et austère pour 99% de la population. J'ai ensuite eu une HP48SX, quelques casios, puis enfin une HP50G et une HP35
Finalement, toutes mes calculatrices restent dans mon placard.. seule ma 28S reste sur mon bureau.

Je suis tombé sur ce forum, un peu par hasard, en cherchant un algorithme sur les calculs des factorielles sur les grands nombres qui utisent les logs.
En le parcourant, j'ai trouvé une ambiance conviviale, et sympa.
Ce forum a donc rejoint mes pages d’accueil et J'espère pouvoir vous apporter un peu de mon expérience sur la programmation RPL des calculatrices HP.
par currybleu
13 févr. 2013 17:05
Forum : Tous les Pockets
Sujet : Misez P'tit, Optimisez - N°32 (factorielle)
Réponses : 115
Vues : 96858

Re: Misez P'tit, Optimisez - N°32 (factorielle)

Paul Tergeist a écrit :Allez plus loin avec le logarithme décimal !!!
Et ma HP28s m'a également confirmé en 15 secondes que 1000! faisait 4.02387267E2567 (fonction SPEED activée) et 8 secondes sur HP50G
!! Attention la fonction RND entre la 28S et la HP50G a changé (je ne sais pas trop pour les séries 48 et 49..
Sur HP28S, pour arrondir à 4 chiffres après la virgule, on fait:

Code : Tout sélectionner

4 FIX RND STD
Sur HP50G, on fait

Code : Tout sélectionner

4 RND
HP28S

Code : Tout sélectionner

<< 0 1 ROT FOR X X LOG + NEXT DUP FP ALOG 8 FIX RND STD ->STR "E" + SWAP FLOOR ->STR + >>
/ HP48? / HP49? / HP50

Code : Tout sélectionner

0 1 ROT FOR X X LOG + NEXT DUP FP ALOG 8 RND ->STR "E" + SWAP FLOOR ->STR +

Aller à la recherche avancée