From 14c854543b1a3cf344a371a5b45595657f95786b Mon Sep 17 00:00:00 2001 From: leochanj105 Date: Tue, 26 Oct 2021 13:22:32 -0400 Subject: add deadlines and costs --- baseline/source/ammunition/ChangeLog.txt | 66 -- baseline/source/ammunition/README | 86 -- baseline/source/ammunition/ammunition.c | 1183 -------------------- baseline/source/ammunition/ammunitionTimed.txt | 100 -- baseline/source/ammunition/ammunition_libc.c | 166 --- baseline/source/ammunition/ammunition_limits.h | 35 - baseline/source/ammunition/ammunition_stdio.h | 8 - baseline/source/ammunition/ammunition_stdlib.h | 6 - baseline/source/ammunition/ammunition_string.h | 18 - baseline/source/ammunition/arithm.c | 1384 ------------------------ baseline/source/ammunition/arithm.h | 123 --- baseline/source/ammunition/bits.c | 313 ------ baseline/source/ammunition/bits.h | 60 - baseline/source/ammunition/gmon.out | Bin 31048 -> 0 bytes baseline/source/ammunition/timeScript | 8 - 15 files changed, 3556 deletions(-) delete mode 100644 baseline/source/ammunition/ChangeLog.txt delete mode 100644 baseline/source/ammunition/README delete mode 100644 baseline/source/ammunition/ammunition.c delete mode 100644 baseline/source/ammunition/ammunitionTimed.txt delete mode 100644 baseline/source/ammunition/ammunition_libc.c delete mode 100644 baseline/source/ammunition/ammunition_limits.h delete mode 100644 baseline/source/ammunition/ammunition_stdio.h delete mode 100644 baseline/source/ammunition/ammunition_stdlib.h delete mode 100644 baseline/source/ammunition/ammunition_string.h delete mode 100644 baseline/source/ammunition/arithm.c delete mode 100644 baseline/source/ammunition/arithm.h delete mode 100644 baseline/source/ammunition/bits.c delete mode 100644 baseline/source/ammunition/bits.h delete mode 100644 baseline/source/ammunition/gmon.out delete mode 100644 baseline/source/ammunition/timeScript (limited to 'baseline/source/ammunition') diff --git a/baseline/source/ammunition/ChangeLog.txt b/baseline/source/ammunition/ChangeLog.txt deleted file mode 100644 index 814ed86..0000000 --- a/baseline/source/ammunition/ChangeLog.txt +++ /dev/null @@ -1,66 +0,0 @@ -File: ammunition.c -Original provenience: DINO programming language - -2016-03-03: -- Add generic TACLeBench header -- Prefix global functions with benchmark name -- Introduce volatile result variable for return statements -- Split code into ammunition_init and ammunition_main -- Fix compiler warnings "array subscript is of type 'char'": - char => unsigned char -- Fix compiler warnings "'&&' within '||'": - Place additional parentheses -- Remove usages and comments related to the macros - HAVE_MEMMOVE, NDEBUG, HAVE_MEMCMP -- Remove comment related to unused NO_TEMPLATE macro -2016-05-02: -- Change C++ style comments to ISO C90 compliant comments -- Avoid mixing declarations and code: move declaration of variable writePos in - functions ammunition_sprintf_d and ammunition_sprintf_u -- Change datatype in function ammunition_bits_test of iteration variables i and - j from int to unsigned int to avoid comparison between signed and unsigned - integer expressions -- Add forward declarations to ammunition.c -- Introduce variable ammunition_result -- Parantheses around comparison in functions ammunition_isdigit and - ammunition_isspace -- Remove usage of limits.h, move definitions of limits into separate file - ammunition_limits.h -- Remove unconditional assignments of variable result to zero after each test in - functions ammunition_bits_test and ammunition_arithm_test -- Remove unused functions unsigned_integer_maximum, integer_minimum, - integer_maximum, integer_remainder -- Remove unused declaration of function default_arithmetic_overflow_reaction -- Remove unused variables zero_constant_itself, zero_constant -- Remove unused declarations of functions set_unsigned_integer_overflow_reaction - and set_integer_overflow_reaction -- Remove block #ifndef MAX_INTEGER_OPERAND_SIZE, set definition of - MAX_INTEGER_OPERAND_SIZE to 128, since this is default -2016-05-10: -- Integrate new version of arithm library from ammunition repository from - dino repository on github (commit: db9cfab042c332abb234ec8d72750103010981c1), - which hanles arithmetic shifts by negative numbers. This change now makes all - test cases in ammunition.c pass. Update headers unsigned int bits => int bits -- Remove assert statements -- Fix memcmp implementation: dereferencing pointer was missing -- Add loop-bound annotation to memcmp -- Fix strcmp implementation -- Integrate working versions of memcpy and memset from pm benchmark -- Update signature of ammunition_memcpy to original version: - void *memcpy(void *dest, const void *src, size_x n); -- Move functions from libc into separate file, introduce header files - ammunition_limits.h, ammunition_stdio.h, ammunition_stdlib.h, - ammunition_string.h -- Fix overflow in sprintf_d: change datatype of variable 'copyOfNumber' from int - to long, since the negative value of INT_MIN is undefined - 2016-05-17: -- Remove all static declarations of global functions -- Rename variables 'digit_number' to digit_num to keep lines below 80 characters -- Rename op1_digit_number to op1_digit_number and op1_digit_num in function - 'ammunition_multiply_unsigned_integer_without_overflow_reaction' -- Rename variable 'scaled_op1_digit_number' in function - 'ammunition_divide_unsigned_integer_without_overflow_reaction' -- Apply code formatting with astyle - -2017-08-18: -- Add explicit casts to silence g++ warnings. diff --git a/baseline/source/ammunition/README b/baseline/source/ammunition/README deleted file mode 100644 index 8caddf4..0000000 --- a/baseline/source/ammunition/README +++ /dev/null @@ -1,86 +0,0 @@ -This directory AMMUNITION contains reusable packages on C/C++: -`allocate', `vlobject', `objstack', `hashtab', `commline', `ticker', -`position', `errors', `bits', `arithm', `IEEE': - o allocate - Allocating and freeing memory with automatic fixing some - allocation errors. - o vlobject - Work with variable length objects (VLO). Any number of bytes - may be added to and removed from the end of VLO. If it is - needed the memory allocated for storing variable length object - may be expanded possibly with changing the object place. But - between any additions of the bytes (or tailoring) the object - place is not changed. To decrease number of changes of the - object place the memory being allocated for the object is - longer than the current object length. - o objstack - Work with stacks of objects (OS). Work with the object on the - stack top is analogous to one with a variable length object. - One motivation for the package is the problem of growing char - strings in symbol tables. Memory for OS is allocated by - segments. A segment may contain more one objects. The most - recently allocated segment contains object on the top of OS. - If there is not sufficient free memory for the top object than - new segment is created and the top object is transferred into - the new segment, i.e. there is not any memory reallocation. - Therefore the top object may change its address. But other - objects never change address. - o hashtab - Work with hash tables. The package permits to work - simultaneously with several expandable hash tables. Besides - insertion and search of elements the elements from the hash - tables can be also removed. The table element can be only a - pointer. The size of hash tables is not fixed. The hash - table will be automatically expanded when its occupancy will - became big. - o position - Work with source code positions. The package serves to - support information about source positions of compiled files - taking all included files into account. - o errors - Output of compiler messages. The package serves output - one-pass or multi-pass compiler messages of various modes - (errors, warnings, fatal, system errors and appended messages) - in Unix style or for traditional listing. The package also - permits adequate error reporting for included files. - o commline - Work with command line. The package implements features - analogous to ones of public domain function `getopt'. The - goal of the package creation is to use more readable language - of command line description and to use command line - description as help output of program. - o ticker - Simultaneous work with several tickers (timers). - o bits - Work with bit strings (copying, moving, setting, testing, - comparison). - o arithm - Implementing host machine-independently arbitrary precision - integer numbers arithmetic. The implementation of the package - functions are not sufficiently efficient in order to use for - run-time. The package functions are oriented to implement - constant-folding in compilers, cross-compilers. - o IEEE - Implementing host machine-independently IEEE floating point - arithmetic. The implementation of the package functions are - not sufficiently efficient in order to use for run-time. The - package functions are oriented to implement constant-folding - in compilers, cross-compilers. - - There are files with corresponding names and extensions `.h' -(interface file for C/C++), `.c' (implementation file on C), and -`.cpp' (implementation file on C++). - - To install AMMUNITION see file INSTALL in the current directory. - - There are also shell scripts for testing the package with -corresponding names and extension `.tst'. Documentation of the -reusable packages is in files `ammunition.txt', `ammunition.dvi', -`ammunition.ps', `ammunition.info*', `ammunition*.html', -`ammunition*.rtf' for C and `ammunition++.txt', `ammunition++.dvi', -`ammunition++.ps', `ammunition++.info*', `ammunition++*.html', -`ammunition++*.rtf'. - -Please send bug reports and comments to vmakarov@fnmail.com - -Vladimir Makarov diff --git a/baseline/source/ammunition/ammunition.c b/baseline/source/ammunition/ammunition.c deleted file mode 100644 index 4ae488b..0000000 --- a/baseline/source/ammunition/ammunition.c +++ /dev/null @@ -1,1183 +0,0 @@ -/* - - This program is part of the TACLeBench benchmark suite. - Version V 2.0 - - Name: ammunition - - Author: Vladimir Makarov - - Function: Tests reusable packages bits and arith - bits: Work with bit strings (copying, moving, setting, testing, comparison). - arith: Implementing host machine-independently arbitrary precision integer - numbers arithmetic. The implementation of the package functions are not - sufficiently efficient in order to use for run-time. The package - functions are oriented to implement constant-folding in compilers, - cross-compilers. - - Source: DINO programming language repository - https://github.com/dino-lang/dino/ - - Changes: no major functional changes - - License: GPL 2 and LGPL 2 - -*/ - -#include "extra.h" -#include "bits.h" -#include "arithm.h" -#include "ammunition_stdlib.h" -#include "ammunition_stdio.h" -#include "ammunition_string.h" - -/* - Forward declaration of functions -*/ - -void ammunition_reset_str_bits( char *str, char *s ); -void ammunition_reset_str_arithm( char *str, char *s, char *d, char *e, - char *g ); -int ammunition_bits_test(); -int ammunition_arithm_test(); -void ammunition_init( void ); -int ammunition_return( void ); -void ammunition_main( void ); -//int main( void ); - - -/* - Forward declaration of global variables -*/ - -int ammunition_result; - - -/* - Core functions -*/ - -void ammunition_reset_str_bits( char *str, char *s ) -{ - int i; - _Pragma( "loopbound min 8 max 8" ) - for ( i = 0; i < 8; i++ ) { - str[i] = 0; - s[i] = 0; - } -} - - -void ammunition_reset_str_arithm( char *str, char *s, char *d, char *e, - char *g ) -{ - int i; - _Pragma( "loopbound min 20 max 20" ) - for ( i = 0; i < 20; i++ ) { - str[i] = 0; - s[i] = 0; - } - - _Pragma( "loopbound min 4 max 4" ) - for ( i = 0; i < 4; i++ ) { - d[i] = 0; - e[i] = 0; - } - - _Pragma( "loopbound min 6 max 6" ) - for ( i = 0; i < 6; i++ ) - g[i] = 0; -} - - -int ammunition_bits_test() -{ - char str[8]; - char str1[8]; - - int result = 0; - unsigned int i, j; - - /* Test 1 */ - ammunition_reset_str_bits( str, str1 ); - - _Pragma( "loopbound min 64 max 64" ) - for ( i = 0; i < sizeof ( str ) * CHAR_BIT; i++ ) { - if ( BIT ( str, i ) ) - result = 1; - } - - _Pragma( "loopbound min 64 max 64" ) - for ( i = 0; i < sizeof ( str ) * CHAR_BIT; i++ ) { - SET_BIT ( str, i, 1 ); - _Pragma( "loopbound min 64 max 64" ) - for ( j = 0; j < sizeof ( str ) * CHAR_BIT; j++ ) - if ( j <= i ) { - if ( BIT ( str, j ) == 0 ) - result = 1; - } else - if ( BIT ( str, j ) ) - result = 1; - } - - /* Test 2 */ - ammunition_reset_str_bits( str, str1 ); - - _Pragma( "loopbound min 64 max 64" ) - for ( i = 0; i < sizeof ( str ) * CHAR_BIT; i++ ) - if ( !ammunition_is_zero_bit_string ( - str, i, ( sizeof ( str ) * CHAR_BIT - i ) / 2 + 1 ) ) - result = 1; - ammunition_bit_string_set ( str, 13, 1, 35 ); - _Pragma( "loopbound min 13 max 13" ) - for ( i = 0; i < 13; i++ ) - if ( !ammunition_is_zero_bit_string ( str, i, 13 - i ) ) - result = 1; - _Pragma( "loopbound min 35 max 35" ) - for ( i = 13; i < 48; i++ ) - if ( ammunition_is_zero_bit_string ( str, i, 48 - i ) ) - result = 1; - _Pragma( "loopbound min 16 max 16" ) - for ( i = 48; i < sizeof ( str ) * CHAR_BIT; i++ ) - if ( !ammunition_is_zero_bit_string ( str, i, - sizeof ( str ) * CHAR_BIT - i ) ) - result = 1; - - /* Test 3 */ - ammunition_reset_str_bits( str, str1 ); - - _Pragma( "loopbound min 42 max 42" ) - for ( i = 0; i + i / 2 + 1 < sizeof ( str ) * CHAR_BIT; i++ ) { - ammunition_bit_string_set ( str, i, 1, i / 2 + 1 ); - if ( !ammunition_is_zero_bit_string ( str, 0, i - 1 ) ) - result = 1; - if ( ammunition_is_zero_bit_string ( str, i, i / 2 + 1 ) ) - result = 1; - if ( !ammunition_is_zero_bit_string ( - str, i + i / 2 + 1, sizeof ( str ) * CHAR_BIT - ( i + i / 2 + 1 ) ) ) - result = 1; - ammunition_bit_string_set ( str, 0, 0, sizeof ( str ) * CHAR_BIT ); - } - - /* Test 4 */ - ammunition_reset_str_bits( str, str1 ); - - ammunition_bit_string_set ( str, 2, 1, 43 ); - ammunition_bit_string_set ( str1, 2, 1, 40 ); - _Pragma( "loopbound min 42 max 42" ) - for ( i = 0; i < 42; i++ ) - if ( ammunition_bit_string_comparison ( str, i, str1, i, 42 - i ) != 0 ) - result = 1; - _Pragma( "loopbound min 43 max 43" ) - for ( i = 0; i < 43; i++ ) - if ( ammunition_bit_string_comparison ( str, i, str1, i, - sizeof ( str ) * CHAR_BIT - i ) - <= 0 ) - result = 1; - _Pragma( "loopbound min 43 max 43" ) - for ( i = 0; i < 43; i++ ) - if ( ammunition_bit_string_comparison ( str1, i, str, i, - sizeof ( str ) * CHAR_BIT - i ) - >= 0 ) - result = 1; - - /* Test 5 */ - ammunition_reset_str_bits( str, str1 ); - - ammunition_bit_string_set ( str, 2, 1, 43 ); - _Pragma( "loopbound min 59 max 59" ) - for ( i = 0; i + 5 < sizeof ( str ) * CHAR_BIT; i++ ) { - ammunition_bit_string_copy ( str1, i + 5, str, i, - sizeof ( str ) * CHAR_BIT - i - 5 ); - if ( ammunition_bit_string_comparison ( - str1, i + 5, str, i, sizeof ( str ) * CHAR_BIT - i - 5 ) != 0 ) - result = 1; - } - - /* Test 6 */ - ammunition_reset_str_bits( str, str1 ); - - ammunition_bit_string_set ( str, 2, 1, 43 ); - ammunition_bit_string_set ( str1, 2, 1, 43 ); - _Pragma( "loopbound min 59 max 59" ) - for ( i = 0; i + 5 < sizeof ( str ) * CHAR_BIT; i++ ) { - ammunition_bit_string_set ( str, 0, 0, sizeof ( str ) * CHAR_BIT ); - ammunition_bit_string_set ( str, 2, 1, 43 ); - ammunition_bit_string_move ( str, i + 5, str, i, - sizeof ( str ) * CHAR_BIT - i - 5 ); - if ( ammunition_bit_string_comparison ( - str, i + 5, str1, i, sizeof ( str ) * CHAR_BIT - i - 5 ) != 0 ) - result = 1; - } - - /* Test 7 */ - ammunition_reset_str_bits( str, str1 ); - - ammunition_bit_string_set ( str, 2, 1, 43 ); - ammunition_bit_string_set ( str1, 2, 1, 43 ); - _Pragma( "loopbound min 59 max 59" ) - for ( i = 0; i + 5 < sizeof ( str ) * CHAR_BIT; i++ ) { - ammunition_bit_string_set ( str, 0, 0, sizeof ( str ) * CHAR_BIT ); - ammunition_bit_string_set ( str, 2, 1, 43 ); - ammunition_bit_string_move ( str, i, str, i + 5, - sizeof ( str ) * CHAR_BIT - i - 5 ); - if ( ammunition_bit_string_comparison ( - str, i, str1, i + 5, sizeof ( str ) * CHAR_BIT - i - 5 ) != 0 ) - result = 1; - } - - return result; -} - - -int ammunition_arithm_test() -{ - int result = 0; - - /* Test 1 */ - int i; - char str [20], s[20], d[4], e[4], g[6]; - - ammunition_integer_from_string ( 4, "-2147483649", d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_d( str, INT_MIN ); - ammunition_integer_from_string ( 4, str, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "2147483648", d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_d( str, INT_MAX ); - ammunition_integer_from_string ( 4, str, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = -2000; i < 2000 ; i++ ) { - ammunition_sprintf_d( str, i ); - ammunition_integer_from_string ( 4, str, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - } - - /* Test 2 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "4294967296", d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_u( str, UINT_MAX ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = 0; i < 4000 ; i++ ) { - ammunition_sprintf_u( str, i ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - } - - /* Test 3 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_sprintf_d( str, INT_MAX ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_integer_from_string ( 4, "1", e ); - ammunition_add_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_d( str, INT_MAX - 4 ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, 4 ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_add_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - ammunition_sprintf_d( str, INT_MAX ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = -2000; i < 2000 ; i++ ) { - ammunition_sprintf_d( str, i ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, i + 1 ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_add_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_atoi ( s ) != i + i + 1 ) - result = 1; - } - - /* Test 4 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_sprintf_u( str, UINT_MAX ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_unsigned_integer_from_string ( 4, "1", e ); - ammunition_add_unsigned_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_u( str, UINT_MAX - 4 ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, 4 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_add_unsigned_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - ammunition_sprintf_u( str, UINT_MAX ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = 0; i < 4000 ; i++ ) { - ammunition_sprintf_u( str, i ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, i + 1 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_add_unsigned_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_atoi ( s ) != i + i + 1 ) - result = 1; - } - - /* Test 5 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_sprintf_d( str, INT_MIN ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_integer_from_string ( 4, "1", e ); - ammunition_subtract_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_d( str, INT_MIN + 4 ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, 4 ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_subtract_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - ammunition_sprintf_d( str, INT_MIN ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = -2000; i < 2000 ; i++ ) { - ammunition_sprintf_d( str, i ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, 10 - i ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_subtract_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_atoi ( s ) != i + i - 10 ) - result = 1; - } - - /* Test 6 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_sprintf_u( str, UINT_MAX - 2 ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, UINT_MAX - 1 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_subtract_unsigned_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_u( str, UINT_MAX ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_subtract_unsigned_integer ( 4, d, d, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = 0; i < 4000 ; i++ ) { - ammunition_sprintf_u( str, i ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, i / 2 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_subtract_unsigned_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_atoi ( s ) != i - i / 2 ) - result = 1; - } - - /* Test 7 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_sprintf_d( str, INT_MAX / 2 + 1 ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_integer_from_string ( 4, "2", e ); - ammunition_multiply_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_d( str, INT_MIN / 2 - 1 ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_integer_from_string ( 4, "2", e ); - ammunition_multiply_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_d( str, INT_MAX / 3 ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, 3 ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_multiply_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - ammunition_sprintf_d( str, ( INT_MAX / 3 ) * 3 ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - ammunition_sprintf_d( str, INT_MIN / 2 ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, 2 ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_multiply_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - ammunition_sprintf_d( str, ( INT_MIN / 2 ) * 2 ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = -2000; i < 2000 ; i++ ) { - ammunition_sprintf_d( str, i ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, i + 1000 ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_multiply_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_atoi ( s ) != i * ( i + 1000 ) ) - result = 1; - } - - /* Test 8 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_sprintf_u( str, UINT_MAX / 5 + 1 ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, 5 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_multiply_unsigned_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_sprintf_u( str, UINT_MAX / 2 ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, 2 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_multiply_unsigned_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - ammunition_sprintf_u( str, ( UINT_MAX / 2 ) * 2 ); - if ( ammunition_strcmp ( s, str ) != 0 ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = 0; i < 4000 ; i++ ) { - ammunition_sprintf_u( str, i ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, i / 2 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_multiply_unsigned_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_atoi ( s ) != i * ( i / 2 ) ) - result = 1; - } - - /* Test 9 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "10", d ); - ammunition_integer_from_string ( 4, "0", e ); - ammunition_divide_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = -2000; i < 2000 ; i++ ) { - ammunition_sprintf_d( str, i ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_sprintf_d( str, ( i < 0 ? - i / 20 + 1 : - i / 20 - 1 ) ); - ammunition_integer_from_string ( 4, str, e ); - ammunition_divide_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_atoi ( s ) != i / ( i < 0 ? - i / 20 + 1 : - i / 20 - 1 ) ) - result = 1; - ammunition_sprintf_d( str, i ); - ammunition_integer_from_string ( 4, str, d ); - ammunition_divide_integer ( 4, d, e, e ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_atoi ( s ) != i / ( i < 0 ? - i / 20 + 1 : - i / 20 - 1 ) ) - result = 1; - } - - /* Test 10 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "0", e ); - ammunition_divide_unsigned_integer ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = 0; i < 4000 ; i++ ) { - ammunition_sprintf_u( str, i ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, i / 20 + 1 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_divide_unsigned_integer ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_atoi ( s ) != i / ( i / 20 + 1 ) ) - result = 1; - } - - /* Test 11 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "0", e ); - ammunition_unsigned_integer_remainder ( 4, d, e, d ); - if ( !ammunition_overflow_bit ) - result = 1; - _Pragma( "loopbound min 4000 max 4000" ) - for ( i = 0; i < 4000 ; i++ ) { - ammunition_sprintf_u( str, i ); - ammunition_unsigned_integer_from_string ( 4, str, d ); - ammunition_sprintf_u( str, i / 20 + 1 ); - ammunition_unsigned_integer_from_string ( 4, str, e ); - ammunition_unsigned_integer_remainder ( 4, d, e, d ); - if ( ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_atoi ( s ) != i % ( i / 20 + 1 ) ) - result = 1; - } - - /* Test 12 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_shift_right ( 4, d, 0, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_shift_right ( 4, d, 32, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_shift_right ( 4, d, 8, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "5" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "134890", d ); - ammunition_unsigned_integer_shift_right ( 4, d, 13, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "16" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "134890", d ); - ammunition_unsigned_integer_shift_left ( 4, d, -13, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "16" ) != 0 ) - result = 1; - - /* Test 13 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_shift_right ( 4, d, 0, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_shift_right ( 4, d, 32, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_shift_right ( 4, d, 8, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "5" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "134890", d ); - ammunition_integer_shift_right ( 4, d, 13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "16" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "134890", d ); - ammunition_integer_shift_left ( 4, d, -13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "16" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_shift_right ( 4, d, 0, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_shift_right ( 4, d, 32, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "-1" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_shift_right ( 4, d, 8, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "-6" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-134890", d ); - ammunition_integer_shift_right ( 4, d, 13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "-17" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-134890", d ); - ammunition_integer_shift_left ( 4, d, -13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( !ammunition_overflow_bit || ammunition_strcmp ( s, "-17" ) != 0 ) - result = 1; - - /* Test 14 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_shift_left ( 4, d, 0, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_shift_left ( 4, d, 22, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_shift_left ( 4, d, 8, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "345088" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "134890", d ); - ammunition_unsigned_integer_shift_left ( 4, d, 13, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1105018880" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "134890", d ); - ammunition_unsigned_integer_shift_right ( 4, d, -13, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1105018880" ) != 0 ) - result = 1; - - /* Test 15 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_shift_left ( 4, d, 0, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_shift_left ( 4, d, 21, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_shift_left ( 4, d, 8, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "345088" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "134890", d ); - ammunition_integer_shift_left ( 4, d, 13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1105018880" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "134890", d ); - ammunition_integer_shift_right ( 4, d, -13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "1105018880" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_shift_left ( 4, d, 0, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_shift_left ( 4, d, 21, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_shift_left ( 4, d, 8, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-345088" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-134890", d ); - ammunition_integer_shift_left ( 4, d, 13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-1105018880" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-134890", d ); - ammunition_integer_shift_right ( 4, d, -13, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-1105018880" ) != 0 ) - result = 1; - - /* Test 16 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "-10", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( ammunition_eq_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( !ammunition_eq_integer ( 4, d, e ) ) - result = 1; - - /* Test 17 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_eq_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_eq_unsigned_integer ( 4, d, e ) ) - result = 1; - - /* Test 18 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "-10", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( !ammunition_ne_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( ammunition_ne_integer ( 4, d, e ) ) - result = 1; - - /* Test 19 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_ne_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_ne_unsigned_integer ( 4, d, e ) ) - result = 1; - - /* Test 20 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "-10", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( ammunition_gt_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( ammunition_gt_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1000000", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( ammunition_gt_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "1000000", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( !ammunition_gt_integer ( 4, d, e ) ) - result = 1; - - /* Test 21 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_gt_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_gt_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1000000", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_gt_unsigned_integer ( 4, d, e ) ) - result = 1; - - /* Test 22 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "-10", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( !ammunition_lt_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( ammunition_lt_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1000000", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( !ammunition_lt_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "1000000", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( ammunition_lt_integer ( 4, d, e ) ) - result = 1; - - /* Test 23 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_lt_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_lt_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1000000", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_lt_unsigned_integer ( 4, d, e ) ) - result = 1; - - /* Test 24 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "-10", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( ammunition_ge_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( !ammunition_ge_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1000000", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( ammunition_ge_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "1000000", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( !ammunition_ge_integer ( 4, d, e ) ) - result = 1; - - /* Test 25 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_ge_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_ge_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1000000", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_ge_unsigned_integer ( 4, d, e ) ) - result = 1; - - /* Test 26 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "-10", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( !ammunition_le_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1348", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( !ammunition_le_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "-1000000", d ); - ammunition_integer_from_string ( 4, "-1348", e ); - if ( !ammunition_le_integer ( 4, d, e ) ) - result = 1; - ammunition_integer_from_string ( 4, "1000000", d ); - ammunition_integer_from_string ( 4, "1348", e ); - if ( ammunition_le_integer ( 4, d, e ) ) - result = 1; - - /* Test 27 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "10", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_le_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( !ammunition_le_unsigned_integer ( 4, d, e ) ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1000000", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - if ( ammunition_le_unsigned_integer ( 4, d, e ) ) - result = 1; - - /* Test 28 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "70000", d ); - ammunition_change_unsigned_integer_size ( 4, d, 2, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "30000", d ); - ammunition_change_unsigned_integer_size ( 4, d, 2, d ); - ammunition_integer_to_string( 2, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "30000" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "11230000", g ); - ammunition_change_unsigned_integer_size ( 4, g, 6, g ); - ammunition_integer_to_string( 6, g, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "11230000" ) != 0 ) - result = 1; - - /* Test 29 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "40000", d ); - ammunition_change_integer_size ( 4, d, 2, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_integer_from_string ( 4, "-33000", d ); - ammunition_change_integer_size ( 4, d, 2, d ); - if ( !ammunition_overflow_bit ) - result = 1; - ammunition_integer_from_string ( 4, "30000", d ); - ammunition_change_integer_size ( 4, d, 2, d ); - ammunition_integer_to_string( 2, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "30000" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-30000", d ); - ammunition_change_integer_size ( 4, d, 2, d ); - ammunition_integer_to_string( 2, d, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-30000" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "11230000", g ); - ammunition_change_integer_size ( 4, g, 6, g ); - ammunition_integer_to_string( 6, g, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "11230000" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-11230000", g ); - ammunition_change_integer_size ( 4, g, 6, g ); - ammunition_integer_to_string( 6, g, s ); - if ( ammunition_overflow_bit || ammunition_strcmp ( s, "-11230000" ) != 0 ) - result = 1; - - /* Test 30 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - ammunition_unsigned_integer_or ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "0", e ); - ammunition_unsigned_integer_or ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "4294967295", e ); - ammunition_unsigned_integer_or ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "4294967295" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "96", e ); - ammunition_unsigned_integer_or ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "1380" ) != 0 ) - result = 1; - - /* Test 31 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "1348", e ); - ammunition_integer_or ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "0", e ); - ammunition_integer_or ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "-1", e ); - ammunition_integer_or ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "-1" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "96", e ); - ammunition_integer_or ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "1380" ) != 0 ) - result = 1; - - /* Test 32 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "1348", e ); - ammunition_unsigned_integer_and ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "0", e ); - ammunition_unsigned_integer_and ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "4294967295", e ); - ammunition_unsigned_integer_and ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_from_string ( 4, "96", e ); - ammunition_unsigned_integer_and ( 4, d, e, e ); - ammunition_unsigned_integer_to_string ( 4, e, s ); - if ( ammunition_strcmp ( s, "64" ) != 0 ) - result = 1; - - /* Test 33 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "1348", e ); - ammunition_integer_and ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "0", e ); - ammunition_integer_and ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "-1", e ); - ammunition_integer_and ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "1348" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_from_string ( 4, "96", e ); - ammunition_integer_and ( 4, d, e, e ); - ammunition_integer_to_string( 4, e, s ); - if ( ammunition_strcmp ( s, "64" ) != 0 ) - result = 1; - - /* Test 34 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_unsigned_integer_from_string ( 4, "1348", d ); - ammunition_unsigned_integer_not ( 4, d, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_strcmp ( s, "4294965947" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "0", d ); - ammunition_unsigned_integer_not ( 4, d, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_strcmp ( s, "4294967295" ) != 0 ) - result = 1; - ammunition_unsigned_integer_from_string ( 4, "4294967295", d ); - ammunition_unsigned_integer_not ( 4, d, d ); - ammunition_unsigned_integer_to_string ( 4, d, s ); - if ( ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - - /* Test 35 */ - ammunition_reset_str_arithm( str, s, d, e, g ); - - ammunition_integer_from_string ( 4, "1348", d ); - ammunition_integer_not ( 4, d, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_strcmp ( s, "-1349" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "0", d ); - ammunition_integer_not ( 4, d, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_strcmp ( s, "-1" ) != 0 ) - result = 1; - ammunition_integer_from_string ( 4, "-1", d ); - ammunition_integer_not ( 4, d, d ); - ammunition_integer_to_string( 4, d, s ); - if ( ammunition_strcmp ( s, "0" ) != 0 ) - result = 1; - - return result; -} - - -/* - Initialization- and return-value-related functions -*/ - -void ammunition_init( void ) -{ - ammunition_result = 0; -} - -int ammunition_return( void ) -{ - return ammunition_result; -} - -/* - Main functions -*/ - -void _Pragma( "entrypoint" ) ammunition_main( void ) -{ - ammunition_result |= ammunition_bits_test(); - ammunition_result |= ammunition_arithm_test(); -} - - -int main( int argc, char **argv ) -{ - SET_UP - for_each_job { - ammunition_init(); - ammunition_main(); - } - WRITE_TO_FILE - return ( ammunition_return() ); -} diff --git a/baseline/source/ammunition/ammunitionTimed.txt b/baseline/source/ammunition/ammunitionTimed.txt deleted file mode 100644 index b49784b..0000000 --- a/baseline/source/ammunition/ammunitionTimed.txt +++ /dev/null @@ -1,100 +0,0 @@ -ammunition none 7 none 100 52370648 ammunitionTimed 0 (null) -ammunition none 7 none 100 52473247 ammunitionTimed 1 (null) -ammunition none 7 none 100 52317008 ammunitionTimed 2 (null) -ammunition none 7 none 100 52427850 ammunitionTimed 3 (null) -ammunition none 7 none 100 52418211 ammunitionTimed 4 (null) -ammunition none 7 none 100 52452295 ammunitionTimed 5 (null) -ammunition none 7 none 100 52400750 ammunitionTimed 6 (null) -ammunition none 7 none 100 52491197 ammunitionTimed 7 (null) -ammunition none 7 none 100 52383220 ammunitionTimed 8 (null) -ammunition none 7 none 100 52455367 ammunitionTimed 9 (null) -ammunition none 7 none 100 52359403 ammunitionTimed 10 (null) -ammunition none 7 none 100 52366038 ammunitionTimed 11 (null) -ammunition none 7 none 100 52373652 ammunitionTimed 12 (null) -ammunition none 7 none 100 52349625 ammunitionTimed 13 (null) -ammunition none 7 none 100 52418910 ammunitionTimed 14 (null) -ammunition none 7 none 100 52359124 ammunitionTimed 15 (null) -ammunition none 7 none 100 52403265 ammunitionTimed 16 (null) -ammunition none 7 none 100 52403055 ammunitionTimed 17 (null) -ammunition none 7 none 100 52355073 ammunitionTimed 18 (null) -ammunition none 7 none 100 52359473 ammunitionTimed 19 (null) -ammunition none 7 none 100 52337402 ammunitionTimed 20 (null) -ammunition none 7 none 100 52367365 ammunitionTimed 21 (null) -ammunition none 7 none 100 52290188 ammunitionTimed 22 (null) -ammunition none 7 none 100 52308907 ammunitionTimed 23 (null) -ammunition none 7 none 100 52417792 ammunitionTimed 24 (null) -ammunition none 7 none 100 52284112 ammunitionTimed 25 (null) -ammunition none 7 none 100 52490150 ammunitionTimed 26 (null) -ammunition none 7 none 100 52386712 ammunitionTimed 27 (null) -ammunition none 7 none 100 52323504 ammunitionTimed 28 (null) -ammunition none 7 none 100 52339289 ammunitionTimed 29 (null) -ammunition none 7 none 100 52340825 ammunitionTimed 30 (null) -ammunition none 7 none 100 52367296 ammunitionTimed 31 (null) -ammunition none 7 none 100 52336146 ammunitionTimed 32 (null) -ammunition none 7 none 100 52374210 ammunitionTimed 33 (null) -ammunition none 7 none 100 52414021 ammunitionTimed 34 (null) -ammunition none 7 none 100 52441748 ammunitionTimed 35 (null) -ammunition none 7 none 100 52366458 ammunitionTimed 36 (null) -ammunition none 7 none 100 52371905 ammunitionTimed 37 (null) -ammunition none 7 none 100 52367086 ammunitionTimed 38 (null) -ammunition none 7 none 100 52324622 ammunitionTimed 39 (null) -ammunition none 7 none 100 52381543 ammunitionTimed 40 (null) -ammunition none 7 none 100 52295707 ammunitionTimed 41 (null) -ammunition none 7 none 100 52346692 ammunitionTimed 42 (null) -ammunition none 7 none 100 52314983 ammunitionTimed 43 (null) -ammunition none 7 none 100 52349625 ammunitionTimed 44 (null) -ammunition none 7 none 100 52466123 ammunitionTimed 45 (null) -ammunition none 7 none 100 52374629 ammunitionTimed 46 (null) -ammunition none 7 none 100 52358006 ammunitionTimed 47 (null) -ammunition none 7 none 100 52392369 ammunitionTimed 48 (null) -ammunition none 7 none 100 52480232 ammunitionTimed 49 (null) -ammunition none 7 none 100 52368203 ammunitionTimed 50 (null) -ammunition none 7 none 100 52430364 ammunitionTimed 51 (null) -ammunition none 7 none 100 52342502 ammunitionTimed 52 (null) -ammunition none 7 none 100 52345504 ammunitionTimed 53 (null) -ammunition none 7 none 100 52495388 ammunitionTimed 54 (null) -ammunition none 7 none 100 52344107 ammunitionTimed 55 (null) -ammunition none 7 none 100 52388109 ammunitionTimed 56 (null) -ammunition none 7 none 100 52431760 ammunitionTimed 57 (null) -ammunition none 7 none 100 52364712 ammunitionTimed 58 (null) -ammunition none 7 none 100 52337473 ammunitionTimed 59 (null) -ammunition none 7 none 100 52433158 ammunitionTimed 60 (null) -ammunition none 7 none 100 52458790 ammunitionTimed 61 (null) -ammunition none 7 none 100 52402357 ammunitionTimed 62 (null) -ammunition none 7 none 100 52307440 ammunitionTimed 63 (null) -ammunition none 7 none 100 52515921 ammunitionTimed 64 (null) -ammunition none 7 none 100 52419607 ammunitionTimed 65 (null) -ammunition none 7 none 100 52401518 ammunitionTimed 66 (null) -ammunition none 7 none 100 52432389 ammunitionTimed 67 (null) -ammunition none 7 none 100 52310862 ammunitionTimed 68 (null) -ammunition none 7 none 100 52279992 ammunitionTimed 69 (null) -ammunition none 7 none 100 52402148 ammunitionTimed 70 (null) -ammunition none 7 none 100 52390414 ammunitionTimed 71 (null) -ammunition none 7 none 100 52374629 ammunitionTimed 72 (null) -ammunition none 7 none 100 52377493 ammunitionTimed 73 (null) -ammunition none 7 none 100 52334749 ammunitionTimed 74 (null) -ammunition none 7 none 100 52402845 ammunitionTimed 75 (null) -ammunition none 7 none 100 52391601 ammunitionTimed 76 (null) -ammunition none 7 none 100 52382800 ammunitionTimed 77 (null) -ammunition none 7 none 100 52471641 ammunitionTimed 78 (null) -ammunition none 7 none 100 52349137 ammunitionTimed 79 (null) -ammunition none 7 none 100 52408293 ammunitionTimed 80 (null) -ammunition none 7 none 100 52454180 ammunitionTimed 81 (null) -ammunition none 7 none 100 52407525 ammunitionTimed 82 (null) -ammunition none 7 none 100 52463749 ammunitionTimed 83 (null) -ammunition none 7 none 100 52335517 ammunitionTimed 84 (null) -ammunition none 7 none 100 52338800 ammunitionTimed 85 (null) -ammunition none 7 none 100 52406268 ammunitionTimed 86 (null) -ammunition none 7 none 100 52269236 ammunitionTimed 87 (null) -ammunition none 7 none 100 52310862 ammunitionTimed 88 (null) -ammunition none 7 none 100 52286138 ammunitionTimed 89 (null) -ammunition none 7 none 100 52381963 ammunitionTimed 90 (null) -ammunition none 7 none 100 52390343 ammunitionTimed 91 (null) -ammunition none 7 none 100 52426663 ammunitionTimed 92 (null) -ammunition none 7 none 100 52344736 ammunitionTimed 93 (null) -ammunition none 7 none 100 52346343 ammunitionTimed 94 (null) -ammunition none 7 none 100 52380287 ammunitionTimed 95 (null) -ammunition none 7 none 100 52344597 ammunitionTimed 96 (null) -ammunition none 7 none 100 52315263 ammunitionTimed 97 (null) -ammunition none 7 none 100 52418560 ammunitionTimed 98 (null) -ammunition none 7 none 100 52333352 ammunitionTimed 99 (null) diff --git a/baseline/source/ammunition/ammunition_libc.c b/baseline/source/ammunition/ammunition_libc.c deleted file mode 100644 index 4cce6e9..0000000 --- a/baseline/source/ammunition/ammunition_libc.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - Include section -*/ - -#include "ammunition_string.h" -#include "ammunition_stdio.h" -#include "ammunition_stdlib.h" - - -/* - Standard library functions -*/ - -char ammunition_isdigit( unsigned char c ) -{ - if ( ( c >= '0' ) & ( c <= '9' ) ) - return 1; - else - return 0; -} - -int ammunition_isspace( int c ) -{ - return ( c == ' ' ) | ( c == '\t' ) | ( c == '\n' ) | ( c == '\r' ); -} - -void *ammunition_memcpy( void *dest, const void *src, size_x size ) -{ - size_x i; - _Pragma( "loopbound min 2 max 6" ) - for ( i = 0; i < size; i++ ) - ( ( unsigned char * )dest )[i] = ( ( unsigned char * )src )[i]; - - return dest; -} - - -void *ammunition_memset( void *s, int c, size_x n ) -{ - size_x i; - _Pragma( "loopbound min 0 max 4" ) - for ( i = 0; i < n; i++ ) - ( ( unsigned char * )s )[i] = ( unsigned char )c; - - return s; -} - - -int ammunition_memcmp ( const void *mem1, const void *mem2, size_x size ) -{ - const unsigned char *p1 = (const unsigned char *) mem1, - *p2 = (const unsigned char *) mem2; - _Pragma( "loopbound min 0 max 4" ) - while ( size-- ) - if ( *p1 != *p2 ) - return ( *p1 - *p2 ); - else - p1++, p2++; - return 0; -} - - -/* The following function is an analog of standard C function - `memmove'. The function returns the first operand. */ - -void *ammunition_memmove ( void *s1, const void *s2, size_x n ) -{ - int i; - - if ( ( ( char * ) s1 < ( char * ) s2 && ( char * ) s1 + n <= ( char * ) s2 ) - || ( ( char * ) s2 < ( char * ) s1 - && ( char * ) s2 + n <= ( char * ) s1 ) ) - return ( void * ) ammunition_memcpy ( s1, s2, n ); - if ( ( char * ) s1 < ( char * ) s2 && ( char * ) s1 + n > ( char * ) s2 ) { - _Pragma( "loopbound min 0 max 4" ) - for ( i = 0; ( size_x ) i < n; i++ ) - ( ( char * ) s1 ) [i] = ( ( char * ) s2 ) [i]; - } else { - _Pragma( "loopbound min 0 max 4" ) - for ( i = n - 1; i >= 0; i-- ) - ( ( char * ) s1 )[i] = ( ( char * ) s2 ) [i]; - } - return s1; -} - -int ammunition_strcmp ( const char *str1, const char *str2 ) -{ - _Pragma( "loopbound min 1 max 4008" ) - while ( *str1 && ( *str1 == *str2 ) ) - str1++, str2++; - return *( const unsigned char * )str1 - *( const unsigned char * )str2; -} - -int ammunition_atoi ( const char *str ) -{ - int result = 0; - int sign = ( str[0] == '-' ? -1 : 1 ); - - int readingPos = 0; - if ( str[0] == '-' || str[0] == '+' ) - readingPos++; - _Pragma( "loopbound min 1 max 1" ) - do { - result *= 10; - result += str[readingPos++] - 48; - } while ( str[readingPos] != 0 ); - - return sign * result; -} - - -int ammunition_sprintf_d( char *s, int number ) -{ - /* How many decimal digits do we need? */ - char digits = 0; - unsigned char writePos = 0; - long long copyOfNumber = number; - _Pragma( "loopbound min 1 max 10" ) - do { - digits++; - copyOfNumber /= 10; - } while ( copyOfNumber != 0 ); - - writePos = digits; - if ( number < 0 ) { - writePos++; - s[0] = '-'; - } - s[writePos] = 0; - - copyOfNumber = number; - _Pragma( "loopbound min 1 max 10" ) - do { - s[--writePos] = 48 + ( ( copyOfNumber >= 0 ? - copyOfNumber : -copyOfNumber ) % 10 ); - copyOfNumber /= 10; - } while ( copyOfNumber != 0 ); - - return digits + ( number < 0 ? 1 : 0 ); -} - - -int ammunition_sprintf_u( char *s, unsigned int number ) -{ - /* How many decimal digits do we need? */ - char digits = 0; - unsigned char writePos = 0; - unsigned long copyOfNumber = number; - _Pragma( "loopbound min 1 max 10" ) - do { - digits++; - copyOfNumber /= 10; - } while ( copyOfNumber != 0 ); - - writePos = digits; - s[writePos] = 0; - - copyOfNumber = number; - _Pragma( "loopbound min 1 max 10" ) - do { - s[--writePos] = 48 + ( copyOfNumber % 10 ); - copyOfNumber /= 10; - } while ( copyOfNumber != 0 ); - - return digits; -} diff --git a/baseline/source/ammunition/ammunition_limits.h b/baseline/source/ammunition/ammunition_limits.h deleted file mode 100644 index 0de4c82..0000000 --- a/baseline/source/ammunition/ammunition_limits.h +++ /dev/null @@ -1,35 +0,0