ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
fp_log.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 LOG
44
45@english
46
47The ''LOG'' instruction calculate the natural logarithm of the given ''number'',
48that must be ''FLOAT''. This is a mathematical function that is the inverse
49of the natural exponential
50(with base e). In other words, the natural logarithm of a number ''x'' is the
51exponent to which Napier's number (e = 2.71828) must be raised to obtain ''x''.
52
53This function can be used to solve differential equations, calculate integrals
54and approximate functions, for normalizing data and it is used in many physical
55and biological models.
56
57@italian
58
59L'istruzione ''LOG'' calcola il logaritmo naturale del ''numero'' dato, che deve
60essere ''FLOAT''. Questa è una funzione matematica che è l'inverso dell'esponenziale
61naturale (con base e). In altre parole, il logaritmo naturale di un numero ''x'' è
62l'esponente a cui deve essere elevato il numero di Nepier (e = 2,71828) per ottenere ''x''.
63
64Questa funzione può essere utilizzata per risolvere equazioni differenziali, calcolare
65integrali e funzioni approssimate, per normalizzare i dati ed è utilizzata in molti
66modelli fisici e biologici.
67
68@syntax = LOG(number)
69
70@example x = LOG(21)
71
72</usermanual> */
73Variable * fp_log( Environment * _environment, char * _value ) {
74
75 Variable * value = variable_retrieve_or_define( _environment, _value, VT_FLOAT, 0 );
76 Variable * result = variable_temporary( _environment, VT_FLOAT, "(log)");
77
78 switch( result->precision ) {
79 case FT_FAST:
80 cpu_float_fast_log( _environment, value->realName, result->realName );
81 break;
82 case FT_SINGLE:
83 cpu_float_single_log( _environment, value->realName, result->realName );
84 break;
85 }
86
87 return result;
88
89}
void cpu_float_single_log(Environment *_environment, char *_value, char *_result)
Definition 6309.c:7310
void cpu_float_fast_log(Environment *_environment, char *_value, char *_result)
Definition 6309.c:7306
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_log(Environment *_environment, char *_value)
Definition fp_log.c:73
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