NAME
    fprintf - formatted print to a file

SYNOPSIS
    fprintf(fd, fmt, x_1, x_2, ...)

TYPES
    fd                  file
    fmt                 string
    x_1, x_2, ...       any

    return              null

DESCRIPTION
    This prints to the file fd exactly what would be printed to
        the standard output by printf(fmt, x_1, x_2, ...).

EXAMPLE
    ; fprintf(files(1), "h=%d, i=%d\n", 2, 3);
    h=2, i=3

    ; c = config("epsilon", 1e-6); c = config("display", 6);
    ; c = config("tilde", 1); c = config("outround", 0);
    ; c = config("fullzero", 0);
    ; fmt = "%f,%10f,%-10f,%10.4f,%.4f,%.f.\n";
    ; a = sqrt(3);
    ; fprintf(files(2), fmt,a,a,a,a,a,a);
    1.732051,  1.732051,1.732051  ,   ~1.7320,~1.7320,~1.

    ; file = fopen("/tmp/foo", "w");
    ; mat A[4] = {sqrt(2), 3/7, "undefined", null()};
    ; fprintf(file, "%f%r",A,A);
    ; fclose(file);
    ; !cat /tmp/foo

    mat [4] (4 elements, 4 nonzero):
      [0] = 1.4142135623730950488
      [1] = ~0.42857142857142857142
      [2] = "undefined"
      [3] = NULL

    mat [4] (4 elements, 4 nonzero):
      [0] = 1767766952966368811/1250000000000000000
      [1] = 3/7
      [2] = "undefined"
      [3] = NULL

    ; /*
       * NOTE: When displaying many digits after the decimal point
       *       be sure to set display(digits) (see 'help display') to
       *       large enough AND to set epsilon(eps) (see 'help epsilon')
       *       small enough (or if the function has a esp argument,
       *       give a eps argument that is small enough) to display
       *       the value correctly.
       */
    ; config("tilde", 1),;

    ; ## NOTE: display has too few digits and epsilon is not small enough

    ; display(12),;
    ; fprintf(files(1), "%f\n", pi(1e-10));
    3.1415926536
    ; epsilon(1e-10),;
    ; fprintf(files(1), "%f\n", pi());
    3.1415926536

    ; ## NOTE: display has too few digits yet epsilon is small enough

    ; display(12),;
    ; fprintf(files(1), "%f\n", pi(1e-72));
    ~3.141592653590
    ; epsilon(1e-72),;
    ; fprintf(files(1), "%f\n", pi());
    ~3.141592653590

    ; ## NOTE: display has enough digits but epsilon is not small enough

    ; display(72),;
    ; fprintf(files(1), "%f\n", pi(1e-10));
    3.1415926536
    ; epsilon(1e-10),;
    ; fprintf(files(1), "%f\n", pi());
    3.1415926536

    ; ## NOTE: display has enough digits and epsilon is small enough

    ; display(72),;
    ; fprintf(files(1), "%f\n", pi(1e-72));
    3.141592653589793238462643383279502884197169399375105820974944592307816406
    ; epsilon(1e-72),;
    ; fprintf(files(1), "%f\n", pi());
    3.141592653589793238462643383279502884197169399375105820974944592307816406

LIMITS
    The number of arguments of fprintf() is not to exceed 1024.

LINK LIBRARY
    none

SEE ALSO
    config, display, epsilon, printf, strprintf

## Copyright (C) 1999-2006,2018,2021  Landon Curt Noll
##
## Calc is open software; you can redistribute it and/or modify it under
## the terms of the version 2.1 of the GNU Lesser General Public License
## as published by the Free Software Foundation.
##
## Calc is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
## Public License for more details.
##
## A copy of version 2.1 of the GNU Lesser General Public License is
## distributed with calc under the filename COPYING-LGPL.  You should have
## received a copy with calc; if not, write to Free Software Foundation, Inc.
## 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
##
## Under source code control:   1996/03/12 22:50:41
## File existed as early as:    1996
##
## chongo <was here> /\oo/\     http://www.isthe.com/chongo/
## Share and enjoy!  :-)        http://www.isthe.com/chongo/tech/comp/calc/
