version 1.2, 2025/02/28 20:06:07
|
version 1.6, 2025/04/09 19:52:02
|
Line 1
|
Line 1
|
/* |
/* |
* * |
* $Id$ |
* * * |
|
* * * |
|
* *************** |
|
* * * * * |
|
* * MUMPS * |
|
* * * * * |
|
* *************** |
|
* * * |
|
* * * |
|
* * |
|
* |
|
* operator.c |
|
* operators pattern-match, divide, multiply, add, power |
* operators pattern-match, divide, multiply, add, power |
* |
* |
* |
* |
* Author: Serena Willis <jpw@coherent-logic.com> |
* Author: Serena Willis <snw@coherent-logic.com> |
* Copyright (C) 1998 MUG Deutschland |
* Copyright (C) 1998 MUG Deutschland |
* Copyright (C) 2020 Coherent Logic Development LLC |
* Copyright (C) 2020, 2025 Coherent Logic Development LLC |
* |
* |
* |
* |
* This file is part of FreeM. |
* This file is part of FreeM. |
Line 35
|
Line 23
|
* You should have received a copy of the GNU Affero Public License |
* You should have received a copy of the GNU Affero Public License |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* |
* |
|
* $Log$ |
|
* Revision 1.6 2025/04/09 19:52:02 snw |
|
* Eliminate as many warnings as possible while building with -Wall |
|
* |
|
* Revision 1.5 2025/03/09 19:50:47 snw |
|
* Second phase of REUSE compliance and header reformat |
|
* |
|
* |
|
* SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC |
|
* SPDX-License-Identifier: AGPL-3.0-or-later |
**/ |
**/ |
|
|
#include "mpsdef.h" |
#include "mpsdef.h" |
#include <stdlib.h> |
#include <stdlib.h> |
#include <math.h> |
#include <math.h> |
|
|
void root (); |
|
void mround (); |
|
int unit (char *str); |
int unit (char *str); |
extern void cond_round (char *a, int digits); /* defined in expr.c */ |
extern void cond_round (char *a, int digits); /* defined in expr.c */ |
|
|
Line 803 void add (char *a, char *b) /* string
|
Line 799 void add (char *a, char *b) /* string
|
mi = 1; |
mi = 1; |
a[0] = ZERO; |
a[0] = ZERO; |
} |
} |
while (a[mi] == ZERO) { |
while (a[(int) mi] == ZERO) { |
stcpy (&a[mi], &a[mi + 1]); |
stcpy (&a[(int) mi], &a[((int) mi) + 1]); |
dpa--; |
dpa--; |
} |
} |
if (dpa < 0) |
if (dpa < 0) |
Line 832 void add (char *a, char *b) /* string
|
Line 828 void add (char *a, char *b) /* string
|
} |
} |
a[0] = MINUS; |
a[0] = MINUS; |
} |
} |
if (a[mi] == EOL) { |
if (a[(int) mi] == EOL) { |
a[0] = ZERO; |
a[0] = ZERO; |
a[1] = EOL; |
a[1] = EOL; |
} |
} |
Line 2511 void m_op (char *a, char *b, short op)
|
Line 2507 void m_op (char *a, char *b, short op)
|
/* rounding */ |
/* rounding */ |
/* 'a' is assumed to be a 'canonic' numeric string */ |
/* 'a' is assumed to be a 'canonic' numeric string */ |
/* it is rounded to 'digits' fractional digits */ |
/* it is rounded to 'digits' fractional digits */ |
void |
void mround (char *a, int digits) |
mround (a, digits) |
|
char *a; |
|
int digits; |
|
{ |
{ |
int ch, |
int ch, |
i, |
i, |