|
|
| 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, |