17db96d56Sopenharmony_ci/* 27db96d56Sopenharmony_ci * Copyright (c) 2008-2020 Stefan Krah. All rights reserved. 37db96d56Sopenharmony_ci * 47db96d56Sopenharmony_ci * Redistribution and use in source and binary forms, with or without 57db96d56Sopenharmony_ci * modification, are permitted provided that the following conditions 67db96d56Sopenharmony_ci * are met: 77db96d56Sopenharmony_ci * 87db96d56Sopenharmony_ci * 1. Redistributions of source code must retain the above copyright 97db96d56Sopenharmony_ci * notice, this list of conditions and the following disclaimer. 107db96d56Sopenharmony_ci * 117db96d56Sopenharmony_ci * 2. Redistributions in binary form must reproduce the above copyright 127db96d56Sopenharmony_ci * notice, this list of conditions and the following disclaimer in the 137db96d56Sopenharmony_ci * documentation and/or other materials provided with the distribution. 147db96d56Sopenharmony_ci * 157db96d56Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND 167db96d56Sopenharmony_ci * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 177db96d56Sopenharmony_ci * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 187db96d56Sopenharmony_ci * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 197db96d56Sopenharmony_ci * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 207db96d56Sopenharmony_ci * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 217db96d56Sopenharmony_ci * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 227db96d56Sopenharmony_ci * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 237db96d56Sopenharmony_ci * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 247db96d56Sopenharmony_ci * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 257db96d56Sopenharmony_ci * SUCH DAMAGE. 267db96d56Sopenharmony_ci */ 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci#include <stdio.h> 307db96d56Sopenharmony_ci#include <stdlib.h> 317db96d56Sopenharmony_ci#include <time.h> 327db96d56Sopenharmony_ci#include <mpdecimal.h> 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_ciint 367db96d56Sopenharmony_cimain(int argc, char **argv) 377db96d56Sopenharmony_ci{ 387db96d56Sopenharmony_ci mpd_context_t ctx; 397db96d56Sopenharmony_ci mpd_t *a, *b; 407db96d56Sopenharmony_ci mpd_t *result; 417db96d56Sopenharmony_ci char *rstring; 427db96d56Sopenharmony_ci char status_str[MPD_MAX_FLAG_STRING]; 437db96d56Sopenharmony_ci clock_t start_clock, end_clock; 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci if (argc != 3) { 467db96d56Sopenharmony_ci fprintf(stderr, "div: usage: ./div x y\n"); 477db96d56Sopenharmony_ci exit(1); 487db96d56Sopenharmony_ci } 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci mpd_init(&ctx, 38); 517db96d56Sopenharmony_ci ctx.traps = 0; 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci result = mpd_new(&ctx); 547db96d56Sopenharmony_ci a = mpd_new(&ctx); 557db96d56Sopenharmony_ci b = mpd_new(&ctx); 567db96d56Sopenharmony_ci mpd_set_string(a, argv[1], &ctx); 577db96d56Sopenharmony_ci mpd_set_string(b, argv[2], &ctx); 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci start_clock = clock(); 607db96d56Sopenharmony_ci mpd_div(result, a, b, &ctx); 617db96d56Sopenharmony_ci end_clock = clock(); 627db96d56Sopenharmony_ci fprintf(stderr, "time: %f\n\n", 637db96d56Sopenharmony_ci (double)(end_clock-start_clock)/(double)CLOCKS_PER_SEC); 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci rstring = mpd_to_sci(result, 1); 667db96d56Sopenharmony_ci mpd_snprint_flags(status_str, MPD_MAX_FLAG_STRING, ctx.status); 677db96d56Sopenharmony_ci printf("%s %s\n", rstring, status_str); 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci mpd_del(a); 707db96d56Sopenharmony_ci mpd_del(b); 717db96d56Sopenharmony_ci mpd_del(result); 727db96d56Sopenharmony_ci mpd_free(rstring); 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci return 0; 757db96d56Sopenharmony_ci} 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci 78