ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
fp_exp.c
Go to the documentation of this file.
1/*****************************************************************************
2 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
3 *****************************************************************************
4 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *----------------------------------------------------------------------------
18 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
19 * (la "Licenza"); è proibito usare questo file se non in conformità alla
20 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
25 * il software distribuito nei termini della Licenza è distribuito
26 * "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
27 * implicite. Consultare la Licenza per il testo specifico che regola le
28 * autorizzazioni e le limitazioni previste dalla medesima.
29 ****************************************************************************/
30
31/****************************************************************************
32 * INCLUDE SECTION
33 ****************************************************************************/
34
35#include "../../ugbc.h"
36#include <math.h>
37
38/****************************************************************************
39 * CODE SECTION
40 ****************************************************************************/
41
42/* <usermanual>
43@keyword EXP
44
45@english
46
47The ''EXP'' command is a mathematical function that calculates the natural
48exponential of a number. In other words, it raises Napier's number (e = 2.71828)
49to the specified power.
50
51The ''EXP'' function has numerous applications in mathematics, science,
52and engineering. It is used to describe phenomena that grow at a rate
53proportional to the amount present, such as population growth or
54radioactive decay. The natural exponential is closely related to
55trigonometric functions and can be used to calculate them.
56
57Many differential equations have solutions that involve the
58natural exponential, and it appears in many probability distributions,
59such as the exponential distribution and the normal distribution.
60
61Noe that ''EXP'' function is defined only for ''FLOAT'' numbers.
62
63@italian
64
65Il comando ''EXP'' è una funzione matematica che calcola l'esponenziale
66naturale di un numero. In altre parole, eleva il numero di Napier
67(e = 2,71828) alla potenza specificata.
68
69La funzione ''EXP'' ha numerose applicazioni in matematica, scienza e
70ingegneria. Viene utilizzata per descrivere fenomeni che crescono a
71una velocità proporzionale alla quantità presente, come la crescita
72della popolazione o il decadimento radioattivo. L'esponenziale
73naturale è strettamente correlato alle funzioni trigonometriche
74e può essere utilizzato per calcolarle.
75
76Molte equazioni differenziali hanno soluzioni che coinvolgono
77l'esponenziale naturale e appare in molte distribuzioni di
78probabilità, come la distribuzione esponenziale e la
79distribuzione normale.
80
81Noto che la funzione ''EXP'' è definita solo per numeri ''FLOAT''.
82
83@syntax = EXP(number)
84
85@example x = EXP(21)
86
87</usermanual> */
88Variable * fp_exp( Environment * _environment, char * _value ) {
89
90 Variable * value = variable_retrieve_or_define( _environment, _value, VT_FLOAT, 0 );
91 Variable * result = variable_temporary( _environment, VT_FLOAT, "(exp)");
92
93 switch( result->precision ) {
94 case FT_FAST:
95 cpu_float_fast_exp( _environment, value->realName, result->realName );
96 break;
97 case FT_SINGLE:
98 cpu_float_single_exp( _environment, value->realName, result->realName );
99 break;
100 }
101
102 return result;
103
104}
void cpu_float_single_exp(Environment *_environment, char *_value, char *_result)
Definition 6309.c:7329
void cpu_float_fast_exp(Environment *_environment, char *_value, char *_result)
Definition 6309.c:7325
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
Variable * fp_exp(Environment *_environment, char *_value)
Definition fp_exp.c:88
FloatTypePrecision precision
Definition ugbc.h:991
char * realName
Definition ugbc.h:982
struct _Variable Variable
Structure of a single variable.
struct _Environment Environment
Structure of compilation environment.
@ VT_FLOAT
Definition ugbc.h:522
@ FT_FAST
Definition ugbc.h:854
@ FT_SINGLE
Definition ugbc.h:855