Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    29

    Traduzione da linguaggio fortland a visual basic

    Qualcuno sa aiutare a tradurre questa routine dal linguaggio fortland a visual basic
    codice:
    C SUBROUTINE GMMMA
    C
    C PURPOSE
    C COMPUTES THE GAMMA FUNCTION FOR A GIVEN ARGUMENT
    C
    C USAGE
    C CALL GMMMA(XX,GX,IER)
    C
    C DESCRIPTION OF PARAMETERS
    C XX -THE ARGUMENT FOR THE GAMMA FUNCTION
    C GX -THE RESULTANT GAMMA FUNCTION VALUE
    C IER-RESULTANT ERROR CODE WHERE
    C IER=0 NO ERROR
    C IER=1 XX IS WITHIN .000001 OF BEING A NEGATIVE INTEGER
    C IER=2 XX GT 57, OVERFLOW, GX SET TO 1.0E75
    C
    C REMARKS
    C NONE
    C
    C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
    C NONE
    C
    C METHOD
    C THE RECURSION RELATION AND POLYNOMIAL APPROXIMATION
    C BY C.HASTINGS,JR., 'APPROXIMATIONS FOR DIGITAL COMPUTERS',
    C PRINCETON UNIVERSITY PRESS, 1955
    C
    C ..................................................................
    C
    SUBROUTINE GMMMA(XX,GX,IER)
    IF(XX-57.)6,6,4
    4 IER=2
    GX=1.7E38
    RETURN
    6 X=XX
    ERR=1.0E-6
    IER=0
    GX=1.0
    IF(X-2.0)50,50,15
    10 IF(X-2.0)110,110,15
    15 X=X-1.0
    GX=GX*X
    GO TO 10
    50 IF(X-1.0)60,120,110
    C
    C SEE IF X IS NEAR NEGATIVE INTEGER OR ZERO
    C
    60 IF(X-ERR)62,62,80
    62 Y=FLOAT(INT(X))-X
    IF(ABS(Y)-ERR)130,130,64
    64 IF(1.0-Y-ERR)130,130,70
    C
    C X NOT NEAR A NEGATIVE INTEGER OR ZERO
    C
    70 IF(X-1.0)80,80,110
    80 GX=GX/X
    X=X+1.0
    GO TO 70
    110 Y=X-1.0
    GY=1.0+Y*(-0.5771017+Y*(+0.9858540+Y*(-0.8764218+Y*(+0.8328212+
    1Y*(-0.5684729+Y*(+0.2548205+Y*(-0.05149930)))))))
    GX=GX*GY
    120 RETURN
    130 IER=1
    RETURN
    END

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    fortland ? FORTRAN (ah ... i giovani ...)

    Mica vorrai fatta tutta la traduzione su un forum !
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    29
    No un aiuto

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E che aiuto ?

    Ti potrei solo consigliare di studiare un po' di FORTRAN ... è un linguaggio molto semplice e, in fondo, vicino al vecchio BASIC.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ma tu hai necessariamente bisogno di usare quell'approccio per calcolare la funzione gamma? Su che range di valori ti serve? Perché una buona approssimazione di solito è l'approssimazione di Lanczos, che si implementa in modo relativamente semplice (poi esistono metodi più precisi che cambiano metodo di calcolo a seconda del range, ma la cosa diventa più complicata).
    E poi, di che versione di VB si sta parlando?
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    29
    Domani ti mando i range che li ho segnati su un foglio

  7. #7
    In ogni caso, dai un'occhiata qui, sono spiegate diverse approssimazioni che puoi usare per la funzione gamma (a seconda del range e della precisione richiesta); per il metodo di Lanczos poi puoi guardare il link del mio post precedente, dove c'è anche un'implementazione di esempio in Python (estremamente leggibile).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.