Deleted Added
full compact
1/*-
2 * Copyright (c) 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Chris Torek.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 488 unchanged lines hidden (view full) ---

497 if ((long)ulval < 0) {
498 ulval = -ulval;
499 sign = '-';
500 }
501 }
502 base = 10;
503 goto number;
504#ifdef FLOATING_POINT
505 case 'e': /* anomalous precision */
506 case 'E':
507 prec = (prec == -1) ?
508 DEFPREC + 1 : prec + 1;
509 /* FALLTHROUGH */
510 case 'f': /* always print trailing zeroes */
511 if (prec != 0)
512 flags |= ALT;
513 case 'g':
514 case 'G':
515 if (prec == -1)
516 prec = DEFPREC;
517fp_begin: _double = va_arg(ap, double);
518 /* do this before tricky precision changes */
519 if (isinf(_double)) {
520 if (_double < 0)
521 sign = '-';
522 cp = "Inf";
523 size = 3;
524 break;
525 }

--- 197 unchanged lines hidden (view full) ---

723
724 /* the string or number proper */
725#ifdef FLOATING_POINT
726 if ((flags & FPT) == 0) {
727 PRINT(cp, size);
728 } else { /* glue together f_p fragments */
729 if (ch >= 'f') { /* 'f' or 'g' */
730 if (_double == 0) {
731 /* kludge for __dtoa irregularity */
732 if (prec == 0 ||
733 (flags & ALT) == 0) {
734 PRINT("0", 1);
735 } else {
736 PRINT("0.", 2);
737 PAD(ndig - 1, zeroes);
738 }
739 } else if (expt <= 0) {
740 PRINT("0.", 2);
741 PAD(-expt, zeroes);

--- 52 unchanged lines hidden (view full) ---

794 double value;
795 int ndigits, flags, *decpt, ch, *length;
796 char *sign;
797{
798 int mode, dsgn;
799 char *digits, *bp, *rve;
800
801 if (ch == 'f')
802 mode = 3;
803 else {
804 mode = 2;
805 }
806 if (value < 0) {
807 value = -value;
808 *sign = '-';
809 } else
810 *sign = '\000';
811 digits = __dtoa(value, mode, ndigits, decpt, &dsgn, &rve);
812 if (flags & ALT) { /* Print trailing zeros */
813 bp = digits + ndigits;
814 if (ch == 'f') {
815 if (*digits == '0' && value)
816 *decpt = -ndigits + 1;
817 bp += *decpt;
818 }
819 if (value == 0) /* kludge for __dtoa irregularity */
820 rve = bp;

--- 38 unchanged lines hidden ---