diff -Nru goffice-0.10.56/ChangeLog goffice-0.10.57/ChangeLog --- goffice-0.10.56/ChangeLog 2023-11-02 23:07:40.000000000 +0000 +++ goffice-0.10.57/ChangeLog 2024-02-11 17:18:25.000000000 +0000 @@ -1,3 +1,24 @@ +2024-02-11 Morten Welinder + + * Release 0.10.57 + +2024-01-22 Morten Welinder + + * goffice/math/go-dtoa.c (fmt_shortest): Fix problem with + Decimal64 number going into E format. + + * goffice/math/go-decimal.c (nextafterD): Fix assert with very + large arguments. + +2023-12-03 Morten Welinder + + * goffice/math/go-dtoa.c (parse_fmt): Fix width parsing (which we + evidently aren't using that much). + +2023-11-02 Morten Welinder + + * configure.ac: Post-release bump. + 2023-11-02 Morten Welinder * Release 0.10.56 diff -Nru goffice-0.10.56/NEWS goffice-0.10.57/NEWS --- goffice-0.10.56/NEWS 2023-10-31 00:58:19.000000000 +0000 +++ goffice-0.10.57/NEWS 2024-01-19 20:44:06.000000000 +0000 @@ -1,3 +1,12 @@ +goffice 0.10.57: + +Morten: + * Excise long double parts of ryu unless --with-long-double. + * Fix various go_dtoa issues. + * Introspection fixes. + * New experimental --with-decimal64 for base-10 math. + +-------------------------------------------------------------------------- goffice 0.10.56: B.S.: diff -Nru goffice-0.10.56/configure goffice-0.10.57/configure --- goffice-0.10.56/configure 2023-11-02 23:08:02.000000000 +0000 +++ goffice-0.10.57/configure 2024-01-20 03:19:43.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for goffice 0.10.56. +# Generated by GNU Autoconf 2.71 for goffice 0.10.57. # # Report bugs to . # @@ -621,8 +621,8 @@ # Identity of this package. PACKAGE_NAME='goffice' PACKAGE_TARNAME='goffice' -PACKAGE_VERSION='0.10.56' -PACKAGE_STRING='goffice 0.10.56' +PACKAGE_VERSION='0.10.57' +PACKAGE_STRING='goffice 0.10.57' PACKAGE_BUGREPORT='https://gitlab.gnome.org/GNOME/goffice/issues' PACKAGE_URL='' @@ -704,6 +704,8 @@ EXTRA_DEPS EXTRA_INCLUDES EXTRA_LIBS +GOFFICE_WITH_DECIMAL64_FALSE +GOFFICE_WITH_DECIMAL64_TRUE WARN_CFLAGS PERL GDK_PIXBUF_CSOURCE @@ -937,6 +939,7 @@ with_libiconv_prefix with_libintl_prefix with_long_double +with_decimal64 enable_introspection with_gir_dir with_typelib_dir @@ -1525,7 +1528,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures goffice 0.10.56 to adapt to many kinds of systems. +\`configure' configures goffice 0.10.57 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1596,7 +1599,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of goffice 0.10.56:";; + short | recursive ) echo "Configuration of goffice 0.10.57:";; esac cat <<\_ACEOF @@ -1648,6 +1651,7 @@ --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --without-long-double disable support for long double + --without-decimal64 disable support for decimal64 --with-gir-dir path to gir repository (automatically detected via pkg-config) --with-typelib-dir path to typelibs repository (automatically detected @@ -1770,7 +1774,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -goffice configure 0.10.56 +goffice configure 0.10.57 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2097,6 +2101,63 @@ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_check_decl + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main (void) +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +eval ac_res=\$$3 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type ac_configure_args_raw= for ac_arg do @@ -2121,7 +2182,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by goffice $as_me 0.10.56, which was +It was created by goffice $as_me 0.10.57, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3393,7 +3454,7 @@ # Define the identity of the package. PACKAGE='goffice' - VERSION='0.10.56' + VERSION='0.10.57' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -3499,7 +3560,7 @@ -VERSION_INFO=10:56:0 +VERSION_INFO=10:57:0 VERSION_IFACE=10 @@ -18728,18 +18789,6 @@ fi -float_msg=no - -# Check whether --with-long-double was given. -if test ${with_long_double+y} -then : - withval=$with_long_double; -else $as_nop - with_long_double=yes -fi - - -if test "x$with_long_double" = "xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long double" >&5 printf %s "checking for long double... " >&6; } @@ -18784,7 +18833,36 @@ fi - if test $ac_cv_type_long_double = yes; then +ac_fn_c_check_type "$LINENO" "__uint128_t" "ac_cv_type___uint128_t" "#include +#include +" +if test "x$ac_cv_type___uint128_t" = xyes +then : + +printf "%s\n" "#define HAVE___UINT128_T 1" >>confdefs.h + + +fi + +if test $ac_cv_type_long_double.$ac_cv_type___uint128_t = yes.yes; then + with_long_double_default=yes +else + with_long_double_default=no +fi + +float_msg=no + +# Check whether --with-long-double was given. +if test ${with_long_double+y} +then : + withval=$with_long_double; +else $as_nop + with_long_double=$with_long_double_default +fi + + +if test "x$with_long_double" = "xyes"; then + if test $with_long_double_default = yes; then have_mandatory_funcs=yes need_sunmath=0 ss_ccprog=`echo $CC | sed -e 's/ .*//'` @@ -19049,6 +19127,64 @@ fi fi +decimal_msg=no +goffice_with_decimal64=false + +# Check whether --with-decimal64 was given. +if test ${with_decimal64+y} +then : + withval=$with_decimal64; +else $as_nop + with_decimal64=no +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Decimal64 support is requested" >&5 +printf %s "checking if Decimal64 support is requested... " >&6; } +if test "x$with_decimal64" = "xyes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + ac_fn_c_check_type "$LINENO" "_Decimal64" "ac_cv_type__Decimal64" "$ac_includes_default" +if test "x$ac_cv_type__Decimal64" = xyes +then : + +printf "%s\n" "#define HAVE__DECIMAL64 1" >>confdefs.h + + +else $as_nop + as_fn_error $? "_Decimal64 type required" "$LINENO" 5 +fi + + ac_fn_c_check_type "$LINENO" "struct printf_info" "ac_cv_type_struct_printf_info" "#include +" +if test "x$ac_cv_type_struct_printf_info" = xyes +then : + +printf "%s\n" "#define HAVE_STRUCT_PRINTF_INFO 1" >>confdefs.h + + +else $as_nop + as_fn_error $? "printf hook support is required" "$LINENO" 5 +fi + + goffice_with_decimal64=true + decimal_msg="yes (Decimal64)" + +printf "%s\n" "#define GOFFICE_WITH_DECIMAL64 1" >>confdefs.h + +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + if $goffice_with_decimal64; then + GOFFICE_WITH_DECIMAL64_TRUE= + GOFFICE_WITH_DECIMAL64_FALSE='#' +else + GOFFICE_WITH_DECIMAL64_TRUE='#' + GOFFICE_WITH_DECIMAL64_FALSE= +fi + + + @@ -19221,7 +19357,7 @@ -printf "%s\n" "#define GOFFICE_VERSION \"0.10.56\"" >>confdefs.h +printf "%s\n" "#define GOFFICE_VERSION \"0.10.57\"" >>confdefs.h printf "%s\n" "#define GO_VERSION_EPOCH 0" >>confdefs.h @@ -19230,7 +19366,7 @@ printf "%s\n" "#define GO_VERSION_MAJOR 10" >>confdefs.h -printf "%s\n" "#define GO_VERSION_MINOR 56" >>confdefs.h +printf "%s\n" "#define GO_VERSION_MINOR 57" >>confdefs.h printf "%s\n" "#define GO_VERSION_EXTRA \"\"" >>confdefs.h @@ -19809,6 +19945,10 @@ as_fn_error $? "conditional \"WITH_GTK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${GOFFICE_WITH_DECIMAL64_TRUE}" && test -z "${GOFFICE_WITH_DECIMAL64_FALSE}"; then + as_fn_error $? "conditional \"GOFFICE_WITH_DECIMAL64\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_INTROSPECTION_TRUE}" && test -z "${HAVE_INTROSPECTION_FALSE}"; then as_fn_error $? "conditional \"HAVE_INTROSPECTION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20227,7 +20367,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by goffice $as_me 0.10.56, which was +This file was extended by goffice $as_me 0.10.57, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20295,7 +20435,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -goffice config.status 0.10.56 +goffice config.status 0.10.57 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -22156,6 +22296,7 @@ Compiler: ${CC} Compiler flags: ${CFLAGS} Long double support: ${float_msg} + Decimal support: ${decimal_msg} Equation support in graphs: ${found_lasem} UI: ${ui_msg} diff -Nru goffice-0.10.56/configure.ac goffice-0.10.57/configure.ac --- goffice-0.10.56/configure.ac 2023-05-20 01:19:44.000000000 +0000 +++ goffice-0.10.57/configure.ac 2024-01-19 20:43:15.000000000 +0000 @@ -7,7 +7,7 @@ m4_define([goffice_version_epoch], [0]) m4_define([goffice_version_major], [10]) -m4_define([goffice_version_minor], [56]) +m4_define([goffice_version_minor], [57]) m4_define([goffice_version_extra], []) m4_define([goffice_full_version], [goffice_version_epoch.goffice_version_major.goffice_version_minor[]goffice_version_extra]) @@ -560,14 +560,23 @@ GOFFICE_CHECK_FUNC(acosh) GOFFICE_CHECK_FUNC(atanh) +AC_TYPE_LONG_DOUBLE +dnl go-ryu needs __uint128_t for long double support. +AC_CHECK_TYPES([__uint128_t], [], [], [[#include +#include ]]) +if test $ac_cv_type_long_double.$ac_cv_type___uint128_t = yes.yes; then + with_long_double_default=yes +else + with_long_double_default=no +fi + float_msg=no AC_ARG_WITH(long-double, [ --without-long-double disable support for long double], - , [ with_long_double=yes]) + , [ with_long_double=$with_long_double_default]) if test "x$with_long_double" = "xyes"; then - AC_TYPE_LONG_DOUBLE - if test $ac_cv_type_long_double = yes; then + if test $with_long_double_default = yes; then have_mandatory_funcs=yes need_sunmath=0 ss_ccprog=`echo $CC | sed -e 's/ .*//'` @@ -651,6 +660,26 @@ unset have_mandatory_funcs fi fi + +decimal_msg=no +goffice_with_decimal64=false +AC_ARG_WITH(decimal64, + [ --without-decimal64 disable support for decimal64], + , [ with_decimal64=no]) +AC_MSG_CHECKING([if Decimal64 support is requested]) +if test "x$with_decimal64" = "xyes"; then + AC_MSG_RESULT(yes) + AC_CHECK_TYPES([_Decimal64], [], [AC_MSG_ERROR([_Decimal64 type required])], []) + AC_CHECK_TYPES([struct printf_info], [], [AC_MSG_ERROR([printf hook support is required])], [[#include ]]) + goffice_with_decimal64=true + decimal_msg="yes (Decimal64)" + AC_DEFINE([GOFFICE_WITH_DECIMAL64], 1, + [Define if GOffice supports Decimal64.]) +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(GOFFICE_WITH_DECIMAL64, $goffice_with_decimal64) + AC_SUBST(EXTRA_LIBS) AC_SUBST(EXTRA_INCLUDES) AC_SUBST(EXTRA_DEPS) @@ -831,6 +860,7 @@ Compiler: ${CC} Compiler flags: ${CFLAGS} Long double support: ${float_msg} + Decimal support: ${decimal_msg} Equation support in graphs: ${found_lasem} UI: ${ui_msg} diff -Nru goffice-0.10.56/debian/changelog goffice-0.10.57/debian/changelog --- goffice-0.10.56/debian/changelog 2024-03-31 01:13:33.000000000 +0000 +++ goffice-0.10.57/debian/changelog 2024-05-02 10:37:36.000000000 +0000 @@ -1,14 +1,15 @@ -goffice (0.10.56-2.1build2) noble; urgency=medium +goffice (0.10.57-2) unstable; urgency=medium - * No-change rebuild for CVE-2024-3094 + * Symbols correction for 32-bit architectures. - -- Steve Langasek Sun, 31 Mar 2024 01:13:33 +0000 + -- Dmitry Smirnov Thu, 02 May 2024 20:37:36 +1000 -goffice (0.10.56-2.1build1) noble; urgency=medium +goffice (0.10.57-1) unstable; urgency=medium - * No-change rebuild against libgtk-3-0t64 + * New upstream release. + * Standards-Version: 4.7.0 - -- Steve Langasek Tue, 19 Mar 2024 06:10:50 +0000 + -- Dmitry Smirnov Thu, 02 May 2024 18:29:15 +1000 goffice (0.10.56-2.1) unstable; urgency=medium diff -Nru goffice-0.10.56/debian/control goffice-0.10.57/debian/control --- goffice-0.10.56/debian/control 2024-03-19 06:10:50.000000000 +0000 +++ goffice-0.10.57/debian/control 2024-05-02 08:23:36.000000000 +0000 @@ -1,9 +1,8 @@ Source: goffice Section: libs Priority: optional -Standards-Version: 4.6.2 -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Dmitry Smirnov +Standards-Version: 4.7.0 +Maintainer: Dmitry Smirnov Build-Depends: dpkg-dev (>= 1.22.5), debhelper-compat (= 12) ,dpkg-dev (>= 1.16.1.1) ,gobject-introspection (>= 1.41.4) ,gtk-doc-tools diff -Nru goffice-0.10.56/debian/copyright goffice-0.10.57/debian/copyright --- goffice-0.10.56/debian/copyright 2023-11-24 09:52:20.000000000 +0000 +++ goffice-0.10.57/debian/copyright 2024-05-02 08:26:26.000000000 +0000 @@ -184,7 +184,7 @@ Files: debian/* Copyright: - 2013-2023 Dmitry Smirnov + 2013-2024 Dmitry Smirnov 2005-2013 J.H.M. Dassen (Ray) License: GPL-2+ diff -Nru goffice-0.10.56/debian/libgoffice-0.10-10t64.symbols goffice-0.10.57/debian/libgoffice-0.10-10t64.symbols --- goffice-0.10.56/debian/libgoffice-0.10-10t64.symbols 2024-02-28 21:35:30.000000000 +0000 +++ goffice-0.10.57/debian/libgoffice-0.10-10t64.symbols 2024-05-02 10:37:36.000000000 +0000 @@ -205,6 +205,7 @@ go_combo_pixmaps_new@Base 0.9.0 go_combo_pixmaps_select_id@Base 0.9.0 go_combo_pixmaps_select_index@Base 0.9.0 + go_complexD_get_type@Base 0.10.57 go_complex_add@Base 0.9.0 (arch-bits=64)go_complex_addl@Base 0.9.0 go_complex_angle@Base 0.9.0 @@ -338,6 +339,7 @@ go_coupdays@Base 0.9.0 go_coupdaysnc@Base 0.9.0 go_create_std_tags_for_buffer@Base 0.9.0 + go_csplineD_get_type@Base 0.10.57 go_cspline_destroy@Base 0.9.0 (arch-bits=64)go_cspline_destroyl@Base 0.9.0 go_cspline_get_deriv@Base 0.9.0 @@ -1127,6 +1129,8 @@ (arch-bits=64)go_qnorml@Base 0.9.0 go_quad_2pi@Base 0.10.11 (arch-bits=64)go_quad_2pil@Base 0.10.11 + go_quad_abs@Base 0.10.57 + (arch-bits=64)go_quad_absl@Base 0.10.57 go_quad_acos@Base 0.10.11 (arch-bits=64)go_quad_acosl@Base 0.10.11 go_quad_add@Base 0.9.0 @@ -1161,10 +1165,14 @@ (arch-bits=64)go_quad_floorl@Base 0.10.9 go_quad_functional@Base 0.9.0 (arch-bits=64)go_quad_functionall@Base 0.9.0 + go_quad_half@Base 0.10.57 + (arch-bits=64)go_quad_halfl@Base 0.10.57 go_quad_hypot@Base 0.10.11 (arch-bits=64)go_quad_hypotl@Base 0.10.11 go_quad_init@Base 0.9.0 (arch-bits=64)go_quad_initl@Base 0.9.0 + go_quad_ln10@Base 0.10.57 + (arch-bits=64)go_quad_ln10l@Base 0.10.57 go_quad_ln2@Base 0.10.9 (arch-bits=64)go_quad_ln2l@Base 0.10.9 go_quad_log@Base 0.10.11 @@ -1199,9 +1207,13 @@ (arch-bits=64)go_quad_mul12l@Base 0.9.0 go_quad_mul@Base 0.9.0 (arch-bits=64)go_quad_mull@Base 0.9.0 + go_quad_negate@Base 0.10.57 + (arch-bits=64)go_quad_negatel@Base 0.10.57 go_quad_one@Base 0.10.9 (arch-bits=64)go_quad_onel@Base 0.10.9 go_quad_pi@Base 0.10.9 + go_quad_pihalf@Base 0.10.57 + (arch-bits=64)go_quad_pihalfl@Base 0.10.57 (arch-bits=64)go_quad_pil@Base 0.10.9 go_quad_pow@Base 0.10.9 (arch-bits=64)go_quad_powl@Base 0.10.9 @@ -1217,6 +1229,8 @@ (arch-bits=64)go_quad_qr_newl@Base 0.10.3 go_quad_qr_r@Base 0.10.3 (arch-bits=64)go_quad_qr_rl@Base 0.10.3 + go_quad_scalbn@Base 0.10.57 + (arch-bits=64)go_quad_scalbnl@Base 0.10.57 go_quad_sin@Base 0.10.11 (arch-bits=64)go_quad_sinl@Base 0.10.11 go_quad_sinpi@Base 0.10.11 @@ -1277,6 +1291,7 @@ go_regexp_quote1@Base 0.9.0 go_regexp_quote@Base 0.9.0 go_regfree@Base 0.9.0 + go_regression_statD_get_type@Base 0.10.57 go_regression_stat_destroy@Base 0.9.0 (arch-bits=64)go_regression_stat_destroyl@Base 0.9.0 go_regression_stat_get_type@Base 0.9.6 diff -Nru goffice-0.10.56/debian/patches/long-double_01.patch goffice-0.10.57/debian/patches/long-double_01.patch --- goffice-0.10.56/debian/patches/long-double_01.patch 2023-11-30 03:14:09.000000000 +0000 +++ goffice-0.10.57/debian/patches/long-double_01.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,280 +0,0 @@ -From 781d10b26c621387885aa409cd52c384049912ff Mon Sep 17 00:00:00 2001 -From: Morten Welinder -Origin: upstream, https://gitlab.gnome.org/GNOME/goffice/-/commit/781d10b26c621387885aa409cd52c384049912ff -Bug-Upstream: https://gitlab.gnome.org/GNOME/goffice/-/issues/70 -Bug-Upstream: https://gitlab.gnome.org/GNOME/goffice/-/issues/72 -Date: Sun, 5 Nov 2023 14:31:29 -0500 -Subject: [PATCH] Compilation: don't include long-double parts of ryu unless --with-long-double - -If we don't need the long double versions, don't compile them. That has -the added benefit of not needing a compiler supporting uint128_t. - ---- a/NEWS -+++ b/NEWS -@@ -12,8 +12,10 @@ - * Fix canvas widget problem. [#68] - * Fix scaled-UI problem. [#54] - * Fix double-scaling problem. [#69] - -+ * Excise long double parts of ryu unless --with-long-double. -+ - -------------------------------------------------------------------------- - goffice 0.10.55: - - Morten: ---- a/goffice/math/go-dtoa.c -+++ b/goffice/math/go-dtoa.c -@@ -463,11 +463,16 @@ - gboolean use_e_notation; - GString const *dec = go_locale_get_decimal(); - - g_string_set_size (dst, 53 + oldlen + dec->len); -- if (is_long) -+ if (is_long) { -+#ifdef GOFFICE_WITH_LONG_DOUBLE - n = go_ryu_ld2s_buffered_n (d, dst->str + oldlen); -- else -+#else -+ g_critical ("Compiled with long-double, then asked to use it"); -+ return; -+#endif -+ } else - n = go_ryu_d2s_buffered_n ((double)d, dst->str + oldlen); - g_string_set_size (dst, oldlen + n); - dpos = strchr (dst->str + oldlen, '.'); - epos = strchr (dst->str + oldlen, 'E'); ---- a/goffice/math/go-ryu.c -+++ b/goffice/math/go-ryu.c -@@ -2,57 +2,10 @@ - - #define bool int - - #include "go-ryu.h" --// File ryu.h imported from ryu --// Copyright 2018 Ulf Adams --// --// The contents of this file may be used under the terms of the Apache License, --// Version 2.0. --// --// (See accompanying file LICENSE-Apache or copy at --// http://www.apache.org/licenses/LICENSE-2.0) --// --// Alternatively, the contents of this file may be used under the terms of --// the Boost Software License, Version 1.0. --// (See accompanying file LICENSE-Boost or copy at --// https://www.boost.org/LICENSE_1_0.txt) --// --// Unless required by applicable law or agreed to in writing, this software --// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY --// KIND, either express or implied. --#ifndef RYU_H --#define RYU_H -- --#ifdef __cplusplus --extern "C" { --#endif -- - #include - --int go_ryu_d2s_buffered_n(double f, char* result); --void go_ryu_d2s_buffered(double f, char* result); --char* go_ryu_d2s(double f); -- --int go_ryu_f2s_buffered_n(float f, char* result); --void go_ryu_f2s_buffered(float f, char* result); --char* go_ryu_f2s(float f); -- --int go_ryu_d2fixed_buffered_n(double d, uint32_t precision, char* result); --void go_ryu_d2fixed_buffered(double d, uint32_t precision, char* result); --char* go_ryu_d2fixed(double d, uint32_t precision); -- --int go_ryu_d2exp_buffered_n(double d, uint32_t precision, char* result); --void go_ryu_d2exp_buffered(double d, uint32_t precision, char* result); --char* go_ryu_d2exp(double d, uint32_t precision); -- --#ifdef __cplusplus --} --#endif -- --#endif // RYU_H --// End of file ryu.h imported from ryu -- - // File common.h imported from ryu - // Copyright 2018 Ulf Adams - // - // The contents of this file may be used under the terms of the Apache License, -@@ -1241,22 +1194,27 @@ - - return to_chars(v, ieeeSign, result); - } - --void go_ryu_d2s_buffered(double f, char* result) { -+#if 0 -+static void go_ryu_d2s_buffered(double f, char* result) { - const int index = go_ryu_d2s_buffered_n(f, result); - - // Terminate the string. - result[index] = '\0'; - } -+#endif - --char* go_ryu_d2s(double f) { -+#if 0 -+static char* go_ryu_d2s(double f) { - char* const result = (char*) malloc(25); - go_ryu_d2s_buffered(f, result); - return result; - } -+#endif - // End of file d2s.c imported from ryu - -+#ifdef GOFFICE_WITH_LONG_DOUBLE - // File ryu_generic_128.h imported from ryu - // Copyright 2018 Ulf Adams - // - // The contents of this file may be used under the terms of the Apache License, -@@ -1302,18 +1260,22 @@ - int32_t exponent; - bool sign; - }; - --struct floating_decimal_128 go_ryu_float_to_fd128(float f); --struct floating_decimal_128 go_ryu_double_to_fd128(double d); -+#if 0 -+static struct floating_decimal_128 go_ryu_float_to_fd128(float f); -+#endif -+#if 0 -+static struct floating_decimal_128 go_ryu_double_to_fd128(double d); -+#endif - - // According to wikipedia (https://en.wikipedia.org/wiki/Long_double), this likely only works on - // x86 with specific compilers (clang?). May need an ifdef. --struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d); -+static struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d); - - // Converts the given binary floating point number to the shortest decimal floating point number - // that still accurately represents it. --struct floating_decimal_128 go_ryu_generic_binary_to_decimal( -+static struct floating_decimal_128 go_ryu_generic_binary_to_decimal( - const __uint128_t bits, const uint32_t mantissaBits, const uint32_t exponentBits, const bool explicitLeadingBit); - - // Converts the given decimal floating point number to a string, writing to result, and returning - // the number characters written. Does not terminate the buffer with a 0. In the worst case, this -@@ -1321,17 +1283,19 @@ - // - // Maximal char buffer requirement: - // sign + mantissa digits + decimal dot + 'E' + exponent sign + exponent digits - // = 1 + 39 + 1 + 1 + 1 + 10 = 53 --int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result); -+static int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result); - - #ifdef __cplusplus - } - #endif - - #endif // RYU_GENERIC_128_H - // End of file ryu_generic_128.h imported from ryu -+#endif // GOFFICE_WITH_LONG_DOUBLE - -+#ifdef GOFFICE_WITH_LONG_DOUBLE - // File generic_128.h imported from ryu - // Copyright 2018 Ulf Adams - // - // The contents of this file may be used under the terms of the Apache License, -@@ -1851,9 +1815,11 @@ - } - - #endif // RYU_GENERIC128_H - // End of file generic_128.h imported from ryu -+#endif // GOFFICE_WITH_LONG_DOUBLE - -+#ifdef GOFFICE_WITH_LONG_DOUBLE - // File generic_128.c imported from ryu - // Copyright 2018 Ulf Adams - // - // The contents of this file may be used under the terms of the Apache License, -@@ -1902,27 +1868,31 @@ - - #define FLOAT_MANTISSA_BITS 23 - #define FLOAT_EXPONENT_BITS 8 - --struct floating_decimal_128 go_ryu_float_to_fd128(float f) { -+#if 0 -+static struct floating_decimal_128 go_ryu_float_to_fd128(float f) { - uint32_t bits = 0; - memcpy(&bits, &f, sizeof(float)); - return go_ryu_generic_binary_to_decimal(bits, FLOAT_MANTISSA_BITS, FLOAT_EXPONENT_BITS, false); - } -+#endif - - #define DOUBLE_MANTISSA_BITS 52 - #define DOUBLE_EXPONENT_BITS 11 - --struct floating_decimal_128 go_ryu_double_to_fd128(double d) { -+#if 0 -+static struct floating_decimal_128 go_ryu_double_to_fd128(double d) { - uint64_t bits = 0; - memcpy(&bits, &d, sizeof(double)); - return go_ryu_generic_binary_to_decimal(bits, DOUBLE_MANTISSA_BITS, DOUBLE_EXPONENT_BITS, false); - } -+#endif - - #define LONG_DOUBLE_MANTISSA_BITS 64 - #define LONG_DOUBLE_EXPONENT_BITS 15 - --struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d) { -+static struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d) { - uint128_t bits = 0; - memcpy(&bits, &d, sizeof(long double)); - #ifdef RYU_DEBUG - // For some odd reason, this ends up with noise in the top 48 bits. We can -@@ -1933,9 +1903,9 @@ - #endif - return go_ryu_generic_binary_to_decimal(bits, LONG_DOUBLE_MANTISSA_BITS, LONG_DOUBLE_EXPONENT_BITS, true); - } - --struct floating_decimal_128 go_ryu_generic_binary_to_decimal( -+static struct floating_decimal_128 go_ryu_generic_binary_to_decimal( - const uint128_t bits, const uint32_t mantissaBits, const uint32_t exponentBits, const bool explicitLeadingBit) { - #ifdef RYU_DEBUG - printf("IN="); - for (int32_t bit = 127; bit >= 0; --bit) { -@@ -2146,9 +2116,9 @@ - memcpy(result + fd.sign, "Infinity", 8); - return fd.sign + 8; - } - --int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result) { -+static int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result) { - if (v.exponent == FD128_EXCEPTIONAL_EXPONENT) { - return copy_special_strl(result, v); - } - -@@ -2199,10 +2169,13 @@ - index += elength; - return index; - } - // End of file generic_128.c imported from ryu -+#endif // GOFFICE_WITH_LONG_DOUBLE - - -+#ifdef GOFFICE_WITH_LONG_DOUBLE - int go_ryu_ld2s_buffered_n (long double d, char *dst) { - struct floating_decimal_128 fd128 = go_ryu_long_double_to_fd128(d); - return go_ryu_generic_to_chars(fd128, dst); - } -+#endif ---- a/goffice/math/go-ryu.h -+++ b/goffice/math/go-ryu.h -@@ -8,9 +8,11 @@ - - /* ------------------------------------------------------------------------- */ - - int go_ryu_d2s_buffered_n (double d, char *dst); -+#ifdef GOFFICE_WITH_LONG_DOUBLE - int go_ryu_ld2s_buffered_n (long double d, char *dst); -+#endif - - /* ------------------------------------------------------------------------- */ - - G_END_DECLS diff -Nru goffice-0.10.56/debian/patches/long-double_02.patch goffice-0.10.57/debian/patches/long-double_02.patch --- goffice-0.10.56/debian/patches/long-double_02.patch 2023-11-30 03:14:14.000000000 +0000 +++ goffice-0.10.57/debian/patches/long-double_02.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -From 9ce985d04044d2f1ba910c5717c7e483004b1c81 Mon Sep 17 00:00:00 2001 -From: Morten Welinder -Origin: upstream, https://gitlab.gnome.org/GNOME/goffice/-/commit/9ce985d04044d2f1ba910c5717c7e483004b1c81 -Bug-Upstream: https://gitlab.gnome.org/GNOME/goffice/-/issues/70 -Bug-Upstream: https://gitlab.gnome.org/GNOME/goffice/-/issues/72 -Date: Sun, 5 Nov 2023 15:04:23 -0500 -Subject: [PATCH] Configuration: disable long double support if we lack __uint128_t. - -go-ryu needs it. - ---- a/configure.ac -+++ b/configure.ac -@@ -559,16 +559,25 @@ - GOFFICE_CHECK_FUNC(asinh) - GOFFICE_CHECK_FUNC(acosh) - GOFFICE_CHECK_FUNC(atanh) - -+AC_TYPE_LONG_DOUBLE -+dnl go-ryu needs __uint128_t for long double support. -+AC_CHECK_TYPES([__uint128_t], [], [], [[#include -+#include ]]) -+if test $ac_cv_type_long_double.$ac_cv_type___uint128_t = yes.yes; then -+ with_long_double_default=yes -+else -+ with_long_double_default=no -+fi -+ - float_msg=no - AC_ARG_WITH(long-double, - [ --without-long-double disable support for long double], -- , [ with_long_double=yes]) -+ , [ with_long_double=$with_long_double_default]) - - if test "x$with_long_double" = "xyes"; then -- AC_TYPE_LONG_DOUBLE -- if test $ac_cv_type_long_double = yes; then -+ if test $with_long_double_default = yes; then - have_mandatory_funcs=yes - need_sunmath=0 - ss_ccprog=`echo $CC | sed -e 's/ .*//'` - ss_cc=`which $ss_ccprog` diff -Nru goffice-0.10.56/debian/patches/series goffice-0.10.57/debian/patches/series --- goffice-0.10.56/debian/patches/series 2023-11-30 02:58:06.000000000 +0000 +++ goffice-0.10.57/debian/patches/series 2024-05-02 08:39:06.000000000 +0000 @@ -1,3 +1 @@ no-nested-externs-error.patch -long-double_01.patch -long-double_02.patch diff -Nru goffice-0.10.56/docs/reference/goffice-0.10.types goffice-0.10.57/docs/reference/goffice-0.10.types --- goffice-0.10.56/docs/reference/goffice-0.10.types 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/goffice-0.10.types 2024-02-11 17:19:37.000000000 +0000 @@ -14,11 +14,13 @@ go_combo_box_get_type go_combo_color_get_type go_combo_pixmaps_get_type +go_complexD_get_type go_complex_get_type go_complexl_get_type go_component_get_type go_component_mime_dialog_get_type go_conf_node_get_type +go_csplineD_get_type go_cspline_get_type go_csplinel_get_type go_data_get_type @@ -77,6 +79,7 @@ go_plugin_service_plugin_loader_get_type go_plugin_service_resource_get_type go_plugin_service_simple_get_type +go_regression_statD_get_type go_regression_stat_get_type go_regression_statl_get_type go_resource_type_get_type diff -Nru goffice-0.10.56/docs/reference/html/GOBezierSpline.html goffice-0.10.57/docs/reference/html/GOBezierSpline.html --- goffice-0.10.56/docs/reference/html/GOBezierSpline.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOBezierSpline.html 2024-02-11 17:19:37.000000000 +0000 @@ -114,8 +114,8 @@

sp

-

a struct GOBezierSpline instance

-  +

a struct GOBezierSpline instance.

+[transfer full] @@ -168,8 +168,9 @@

Returns

-

a newly created struct GOBezierSpline instance which should be -destroyed by a call to go_bezier_spline_destroy.

+

a newly created struct GOBezierSpline instance +which should be destroyed by a call to go_bezier_spline_destroy.

+

[transfer full]


@@ -231,8 +232,8 @@

Returns

-

a newly created GOPath which should be destroyed by a call to -go_path_free.

+

GOPath matching spline.

+

[transfer full]

diff -Nru goffice-0.10.56/docs/reference/html/GOColorGroup.html goffice-0.10.57/docs/reference/html/GOColorGroup.html --- goffice-0.10.56/docs/reference/html/GOColorGroup.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOColorGroup.html 2024-02-11 17:19:37.000000000 +0000 @@ -149,7 +149,7 @@
GOColorGroup *
 go_color_group_fetch (char const *name,
                       gpointer context);
-

if name is NULL or a name not currently in use by another group +

if name is NULL or a name not currently in use by another group then a new group is created and returned. If name was NULL then the new group is given a unique name prefixed by "__cg_autogen_name__" (thereby insuring namespace separation). @@ -166,8 +166,8 @@

name

-

target name

-  +

target name.

+[nullable]

context

@@ -189,7 +189,6 @@
GOColorGroup *
 go_color_group_find (char const *name,
                      gpointer context);
-

No reference is added if it is found.

Parameters

@@ -214,9 +213,9 @@

Returns

-

Look up the name/context specific color-group. -NULL if it is not found.

-

[transfer none]

+

Look up the name/context specific +color-group. NULL if it is not found.

+

[transfer none][nullable]

diff -Nru goffice-0.10.56/docs/reference/html/GOData.html goffice-0.10.57/docs/reference/html/GOData.html --- goffice-0.10.56/docs/reference/html/GOData.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOData.html 2024-02-11 17:19:37.000000000 +0000 @@ -389,20 +389,20 @@ - - + + - - + +

a

GOData

 

GOData.

[nullable]

b

GOData

 

GOData.

[nullable]

Returns

-

TRUE if a +

TRUE if a and b are the same

@@ -572,7 +572,7 @@
char *
 go_data_serialize (GOData const *dat,
                    gpointer user);
-

NOTE : This is the _source_ not the content. (I.e., this refers to the +

NOTE: This is the _source_ not the content. (I.e., this refers to the expression, not its current value.)

Parameters

diff -Nru goffice-0.10.56/docs/reference/html/GODistribution.html goffice-0.10.57/docs/reference/html/GODistribution.html --- goffice-0.10.56/docs/reference/html/GODistribution.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GODistribution.html 2024-02-11 17:19:37.000000000 +0000 @@ -385,12 +385,50 @@

go_distribution_type_from_string ()

GODistributionType
 go_distribution_type_from_string (char const *name);
+
+

Parameters

+
+++++ + + + + + +

name

untranslated name of distribution

 
+
+
+

Returns

+

type of distribution

+

go_distribution_type_to_string ()

char const *
 go_distribution_type_to_string (GODistributionType type);
+
+

Parameters

+
+++++ + + + + + +

type

distribution type to query

 
+
+
+

Returns

+

an untranslated name of the distribution.

+
diff -Nru goffice-0.10.56/docs/reference/html/GODoc.html goffice-0.10.57/docs/reference/html/GODoc.html --- goffice-0.10.56/docs/reference/html/GODoc.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GODoc.html 2024-02-11 17:19:37.000000000 +0000 @@ -725,7 +725,7 @@

Returns

-

TRUE if doc +

TRUE if doc has been modified.

@@ -1077,7 +1077,7 @@

Returns

-

TRUE if the name was set succesfully.

+

TRUE if the name was set succesfully.


diff -Nru goffice-0.10.56/docs/reference/html/GOEditor.html goffice-0.10.57/docs/reference/html/GOEditor.html --- goffice-0.10.56/docs/reference/html/GOEditor.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOEditor.html 2024-02-11 17:19:37.000000000 +0000 @@ -191,8 +191,8 @@

editor

-

a GOEditor

-  +

a GOEditor.

+[nullable] @@ -256,7 +256,7 @@

Returns

the page with name as name if any.

-

[transfer none]

+

[transfer none][nullable]


diff -Nru goffice-0.10.56/docs/reference/html/GOFont.html goffice-0.10.57/docs/reference/html/GOFont.html --- goffice-0.10.56/docs/reference/html/GOFont.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOFont.html 2024-02-11 17:19:37.000000000 +0000 @@ -201,8 +201,6 @@

go_font_new_by_desc ()

GOFont const *
 go_font_new_by_desc (PangoFontDescription *desc);
-

NOTE : Absorbs desc -.

Parameters

@@ -220,8 +218,9 @@

Returns

-

a ref to a font that matches desc -.

+

a font that matches desc +.

+

[transfer full]


@@ -283,7 +282,7 @@

Returns

a sorted list of font -sizes in Pango units. The list must be freed.

+sizes in Pango units.

[element-type guint][transfer container]

diff -Nru goffice-0.10.56/docs/reference/html/GOFormat.html goffice-0.10.57/docs/reference/html/GOFormat.html --- goffice-0.10.56/docs/reference/html/GOFormat.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOFormat.html 2024-02-11 17:19:37.000000000 +0000 @@ -677,7 +677,8 @@

Returns

-

the XL style format strint.

+

the XL style format strint.

+

[transfer none]


@@ -704,7 +705,9 @@

Returns

-

NULL if the new format would not change things

+

New format, or NULL if the format +would not change.

+

[transfer full][nullable]


@@ -1030,8 +1033,8 @@

Returns

-

TRUE if format is a number format with a day-of-month specifier -FALSE otherwise.

+

TRUE if format is a number format with a day-of-month specifier +FALSE otherwise.


@@ -1056,8 +1059,8 @@

Returns

-

TRUE if format is a number format with an hour specifier -FALSE otherwise.

+

TRUE if format is a number format with an hour specifier +FALSE otherwise.


@@ -1082,8 +1085,8 @@

Returns

-

TRUE if format is a number format with a minute specifier -FALSE otherwise.

+

TRUE if format is a number format with a minute specifier +FALSE otherwise.


@@ -1108,8 +1111,8 @@

Returns

-

TRUE if format is a number format with a year specifier -FALSE otherwise.

+

TRUE if format is a number format with a year specifier +FALSE otherwise.


@@ -1134,8 +1137,8 @@

Returns

-

TRUE if format is a number format with a year specifier -FALSE otherwise.

+

TRUE if format is a number format with a year specifier +FALSE otherwise.


@@ -1162,7 +1165,9 @@

Returns

-

NULL if the new format would not change things

+

New format, or NULL if the format +would not change.

+

[transfer full][nullable]


@@ -1243,7 +1248,7 @@

Returns

-

TRUE if, and if only, the format is invalid

+

TRUE if, and if only, the format is invalid


@@ -1437,8 +1442,9 @@

Returns

-

Looks up and potentially creates a GOFormat from the supplied -string in XL format.

+

A GOFormat matching str +.

+

[transfer full]


@@ -1454,7 +1460,7 @@ go_format_new_markup (PangoAttrList *markup, gboolean add_ref);

If add_ref - is FALSE absorb the reference to markup + is FALSE absorb the reference to markup , otherwise add a reference.

@@ -1481,7 +1487,8 @@

Returns

-

A new format.

+

A new format.

+

[transfer full]


@@ -1692,7 +1699,9 @@

Returns

-

a non-local format string, or NULL if the format was not valid.

+

a non-local format string, or +NULL if the format was not valid.

+

[transfer full][nullable]


@@ -1719,7 +1728,9 @@

Returns

-

a localized format string, or NULL if the format was not valid.

+

a localized format string, or +NULL if the format was not valid.

+

[transfer full][nullable]


@@ -1784,7 +1795,8 @@

Returns

-

a newly allocated string containing formated value.

+

formatted value.

+

[transfer full]


@@ -1834,7 +1846,7 @@ - @@ -1862,7 +1874,7 @@ - + @@ -1936,7 +1948,7 @@ - @@ -1964,7 +1976,7 @@ - + @@ -1997,6 +2009,36 @@
char *
 go_format_valuel (GOFormat const *fmt,
                   long double val);
+

Converts val + into a string using format specified by fmt +.

+
+

Parameters

+

metrics

Font metrics corresponding to mesaure +

Font metrics corresponding to measure .

 

go_color

a color to rende

a color to render

 

metrics

Font metrics corresponding to mesaure +

Font metrics corresponding to measure .

 

go_color

a color to rende

a color to render

 
+++++ + + + + + + + + + + + + +

fmt

a GOFormat

 

val

value to format

 
+
+
+

Returns

+

formatted value.

+

[transfer full]

+

@@ -2122,7 +2164,7 @@

metrics

-

Font metrics corresponding to mesaure +

Font metrics corresponding to measure .

  @@ -2163,7 +2205,7 @@

Types and Values

GO_SUBSCRIPT_RISE

-
#define GO_SUBSCRIPT_RISE -5000
+
#define GO_SUBSCRIPT_RISE (-5000)
 

@@ -2424,7 +2466,7 @@

GO_FORMAT_UNKNOWN

-

unknown ,should not occur.

+

unknown, should not occur.

  diff -Nru goffice-0.10.56/docs/reference/html/GOImage.html goffice-0.10.57/docs/reference/html/GOImage.html --- goffice-0.10.56/docs/reference/html/GOImage.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOImage.html 2024-02-11 17:19:37.000000000 +0000 @@ -359,7 +359,8 @@

Returns

-

corresponding mime type.

+

corresponding mime type.

+

[transfer full][nullable]


@@ -425,7 +426,8 @@

Returns

-

a GOImageFormatInfo struct.

+

a GOImageFormatInfo struct.

+

[transfer none]


@@ -658,7 +660,8 @@

Returns

-

file extension for the given mime type.

+

file extension for the given mime type.

+

[transfer full]

diff -Nru goffice-0.10.56/docs/reference/html/GOPath.html goffice-0.10.57/docs/reference/html/GOPath.html --- goffice-0.10.56/docs/reference/html/GOPath.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOPath.html 2024-02-11 17:19:37.000000000 +0000 @@ -350,6 +350,7 @@

Appends path2 at the end of path1 .

+

[skip]

Parameters

@@ -429,15 +430,16 @@ - - + +

path

GOPath

 

GOPath.

[nullable]

Returns

-

a new GOPath identical to path -.

+

a new GOPath identical to path +.

+

[transfer full][nullable]


@@ -447,7 +449,8 @@ go_path_copy_restricted (GOPath const *path, gssize start, gssize end); -

Copies actions between start and end will be copied inside a new GOPath.

+

Copies actions between start and end will be copied inside a new GOPath. +If start or end is negative, it is not taken into account.

Parameters

@@ -477,8 +480,8 @@

Returns

-

a new GOPath. If start or end is -negative, it is not taken into account.

+

a new GOPath.

+

[transfer full]

Since: 0.10.5

@@ -699,8 +702,8 @@ - - + + @@ -712,8 +715,9 @@

Returns

-

the newly allocated GOPath or NULL on error.

-

[transfer full]

+

the newly allocated GOPath +or NULL on error.

+

[transfer full][nullable]


@@ -731,15 +735,15 @@ - - + +

src

an ODF enhanced path.

 

an ODF enhanced path.

[nullable]

variables

src

an SVG path.

 

an SVG path.

[nullable]

Returns

the newly allocated GOPath.

-

[transfer full]

+

[transfer full][nullable]


diff -Nru goffice-0.10.56/docs/reference/html/GOPlugin.html goffice-0.10.57/docs/reference/html/GOPlugin.html --- goffice-0.10.56/docs/reference/html/GOPlugin.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOPlugin.html 2024-02-11 17:19:37.000000000 +0000 @@ -387,8 +387,8 @@

Returns

-

TRUE if plugin -can be deactivated and FALSE otherwise.

+

TRUE if plugin +can be deactivated and FALSE otherwise.


@@ -810,8 +810,8 @@

Returns

-

TRUE if plugin -is active and FALSE otherwise.

+

TRUE if plugin +is active and FALSE otherwise.


@@ -836,8 +836,8 @@

Returns

-

TRUE if plugin -is loaded and FALSE otherwise.

+

TRUE if plugin +is loaded and FALSE otherwise.


diff -Nru goffice-0.10.56/docs/reference/html/GOSelector.html goffice-0.10.57/docs/reference/html/GOSelector.html --- goffice-0.10.56/docs/reference/html/GOSelector.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOSelector.html 2024-02-11 17:19:37.000000000 +0000 @@ -222,7 +222,7 @@ go_selector_get_active (GOSelector *selector, gboolean *is_auto);

Retrieves current selection index, and set is_auto - to TRUE if + to TRUE if current selection was set by clicking on automatic palette item.

Parameters

@@ -341,7 +341,7 @@

Returns

-

TRUE if selection is actually changed.

+

TRUE if selection is actually changed.


diff -Nru goffice-0.10.56/docs/reference/html/GOString.html goffice-0.10.57/docs/reference/html/GOString.html --- goffice-0.10.56/docs/reference/html/GOString.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOString.html 2024-02-11 17:19:37.000000000 +0000 @@ -272,7 +272,8 @@ reference to functions that do not add references to the result

Returns

-

A string saying 'ERROR' but does not add a ref to it.

+

A string saying 'ERROR'.

+

[transfer none]


@@ -326,7 +327,7 @@

Returns

-

TRUE if the two strings are equal when ignoring letter case.

+

TRUE if the two strings are equal when ignoring letter case.


@@ -448,13 +449,18 @@ +
+

Returns

+

markup from gstr +.

+

[transfer none][nullable]

+

go_string_get_phonetic ()

GOStringPhonetic *
 go_string_get_phonetic (GOString const *gstr);
-

Warning: Not implemented, always returns NULL.

[skip]

Parameters

@@ -474,7 +480,7 @@

Returns

the phonetic data.

-

[transfer none]

+

[transfer none][nullable]


@@ -505,17 +511,19 @@ -

str

-

string (optionally NULL)

+

str (nullable)

+

string

 

Returns

-

a reference to a GOString containing str -, or NULL if str -is NULL

+

a GOString containing str +, or +NULL if str +is NULL.

+

[transfer full][nullable]


@@ -537,8 +545,8 @@

str

-

string (optionally NULL)

-  +

string.

+[nullable]

len

@@ -550,9 +558,11 @@

Returns

-

a reference to a GOString containing str -, or NULL if str -is NULL

+

a GOString containing str +, or +NULL if str +is NULL.

+

[transfer full][nullable]


@@ -572,15 +582,18 @@

str

-

string

-  +

string.

+[nullable]

Returns

-

a reference to a GOString containing str -

+

a GOString containing str +, or +NULL if str +is NULL.

+

[transfer full][nullable]


@@ -602,8 +615,8 @@

str

-

string (optionally NULL)

-  +

string.

+[transfer full][nullable]

len

@@ -615,8 +628,9 @@

Returns

-

a reference to a GOString containing str -

+

a GOString containing str +.

+

[transfer full][nullable]


@@ -637,7 +651,7 @@ -

str

+

str (nullable)

string.

  @@ -648,20 +662,21 @@

markup

-

optionally NULL list, GOString steals the ref.

-  +

optional markup.

+[transfer full][nullable]

phonetic

-

optionally NULL list of phonetic extensions, GOString steals the ref.

-  +

optional list of phonetic extensions.

+[transfer full][nullable]

Returns

-

a string.

+

a string.

+

[transfer full]


@@ -682,8 +697,8 @@ -

str

-

string; GOString takes ownership

+

str (transfer full) (nullable)

+

string

  @@ -693,20 +708,21 @@

markup

-

optionally NULL list, GOString steals the ref.

-  +

optional markup.

+[transfer full][nullable]

phonetic

-

optionally NULL list of phonetic extensions, GOString steals the ref.

-  +

optional list of phonetic extensions.

+[transfer full][nullable]

Returns

-

a string.

+

a string.

+

[transfer full]


@@ -745,8 +761,9 @@

Returns

-

gstr -

+

gstr +.

+

[transfer none]


diff -Nru goffice-0.10.56/docs/reference/html/GOStyledObject.html goffice-0.10.57/docs/reference/html/GOStyledObject.html --- goffice-0.10.56/docs/reference/html/GOStyledObject.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GOStyledObject.html 2024-02-11 17:19:37.000000000 +0000 @@ -239,7 +239,7 @@

Returns

a new GOStyle.

-

[transfer full]

+

[transfer full][nullable]


@@ -266,8 +266,9 @@

Returns

-

he GODoc associated with the object if any.

-

[transfer none]

+

the GODoc associated with the +object if any.

+

[transfer none][nullable]


@@ -295,7 +296,7 @@

Returns

the styled object's GOStyle.

-

[transfer none]

+

[transfer none][nullable]


diff -Nru goffice-0.10.56/docs/reference/html/GogAxis.html goffice-0.10.57/docs/reference/html/GogAxis.html --- goffice-0.10.56/docs/reference/html/GogAxis.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GogAxis.html 2024-02-11 17:19:37.000000000 +0000 @@ -512,13 +512,13 @@

minima

-

non-NULL storage for result

-  +

storage for result.

+[out]

maxima

-

non-NULL storage for result

-  +

storage for result.

+[out] @@ -917,7 +917,7 @@

Returns

-

TRUE if labels are centered on ticks when axis +

TRUE if labels are centered on ticks when axis is discrete

@@ -943,7 +943,7 @@

Returns

-

TRUE if axis +

TRUE if axis enumerates a set of discrete items, rather than a continuous value

@@ -970,7 +970,7 @@

Returns

-

TRUE if axis +

TRUE if axis is inverted.

diff -Nru goffice-0.10.56/docs/reference/html/GogChart.html goffice-0.10.57/docs/reference/html/GogChart.html --- goffice-0.10.56/docs/reference/html/GogChart.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GogChart.html 2024-02-11 17:19:37.000000000 +0000 @@ -444,7 +444,7 @@

Returns

-

TRUE if the chart has been positioned.

+

TRUE if the chart has been positioned.


diff -Nru goffice-0.10.56/docs/reference/html/GogObject.html goffice-0.10.57/docs/reference/html/GogObject.html --- goffice-0.10.56/docs/reference/html/GogObject.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GogObject.html 2024-02-11 17:19:37.000000000 +0000 @@ -1525,7 +1525,7 @@

Returns

-

TRUE the new flags are permitted.

+

TRUE if the new flags are permitted.


diff -Nru goffice-0.10.56/docs/reference/html/GogSeries.html goffice-0.10.57/docs/reference/html/GogSeries.html --- goffice-0.10.56/docs/reference/html/GogSeries.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/GogSeries.html 2024-02-11 17:19:37.000000000 +0000 @@ -540,7 +540,7 @@

Returns

-

TRUE if the series has a visible legend entry

+

TRUE if the series has a visible legend entry


diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-Cubic-splines.html goffice-0.10.57/docs/reference/html/goffice-0.10-Cubic-splines.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-Cubic-splines.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-Cubic-splines.html 2024-02-11 17:19:37.000000000 +0000 @@ -201,6 +201,22 @@

go_cspline_destroyl ()

void
 go_cspline_destroyl (GOCSplinel *sp);
+

Frees the spline structure when done.

+
+

Parameters

+
+++++ + + + + + +

sp

a spline structure returned by go_cspline_init.

 
+

@@ -242,6 +258,33 @@
long double
 go_cspline_get_derivl (GOCSplinel const *sp,
                        long double x);
+

sp must be a valid spline structure as returned by go_cspline_init.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

sp

a spline structure returned by go_cspline_init.

 

x

the value

 
+
+
+

Returns

+

the interpolated derivative at x, or 0 if an error occurred.

+

@@ -293,6 +336,41 @@ go_cspline_get_derivsl (GOCSplinel const *sp, long double const *x, int n); +

sp must be a valid spline structure as returned by go_cspline_init. +The x values must be sorted in increasing order.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

sp

a spline structure returned by go_cspline_init.

 

x

a vector a values at which interpolation is requested.

 

n

the number of interpolation requested.

 
+
+
+

Returns

+

a newly allocated array of the n interpolated derivatives which +should be destroyed by a call to g_free when not anymore needed, or NULL if +an error occurred.

+

@@ -344,6 +422,41 @@ go_cspline_get_integralsl (GOCSplinel const *sp, long double const *x, int n); +

sp must be a valid spline structure as returned by go_cspline_init. +The x values must be sorted in increasing order.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

sp

a spline structure returned by go_cspline_init.

 

x

a vector a values at which interpolation is requested.

 

n

the number of interpolation requested.

 
+
+
+

Returns

+

a newly allocated array of the n-1 integrals on the intervals +between two consecutive values stored in x. which should be destroyed by +a call to g_free when not anymore needed, or NULL if an error occurred.

+

@@ -385,6 +498,33 @@
long double
 go_cspline_get_valuel (GOCSplinel const *sp,
                        long double x);
+

sp must be a valid spline structure as returned by go_cspline_init.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

sp

a spline structure returned by go_cspline_init.

 

x

The value

 
+
+
+

Returns

+

the interpolated value for x, or 0 if an error occurred.

+

@@ -436,6 +576,41 @@ go_cspline_get_valuesl (GOCSplinel const *sp, long double const *x, int n); +

sp must be a valid spline structure as returned by go_cspline_init. +The x values must be sorted in increasing order.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

sp

a spline structure returned by go_cspline_init.

 

x

a vector a values at which interpolation is requested.

 

n

the number of interpolation requested.

 
+
+
+

Returns

+

a newly allocated array of interpolated values which should +be destroyed by a call to g_free when not anymore needed, or NULL if +an error occurred.

+

@@ -448,10 +623,11 @@ double c0, double cn);

Creates a spline structure, and computes the coefficients associated with the -polynoms. The ith polynome (between x[i-1] and x[i] is: +polynomials. The ith polynomial (between x[i-1] and x[i] is: y(x) = y[i-1] + (c[i-1] + (b[i-1] + a[i] * (x - x[i-1])) * (x - x[i-1])) * (x - x[i-1]) where a[i-1], b[i-1], c[i-1], x[i-1] and y[i-1] are the corresponding members of the new structure.

+

[skip]

Parameters

@@ -480,7 +656,7 @@ @@ -514,8 +690,67 @@ long double const *y, int n, unsigned limits, - long double a0, - long double a1); + long double c0, + long double cn); +

Creates a spline structure, and computes the coefficients associated with the +polynomials. The ith polynomial (between x[i-1] and x[i] is: +y(x) = y[i-1] + (c[i-1] + (b[i-1] + a[i] * (x - x[i-1])) * (x - x[i-1])) * (x - x[i-1]) +where a[i-1], b[i-1], c[i-1], x[i-1] and y[i-1] are the corresponding +members of the new structure.

+

[skip]

+
+

Parameters

+

limits

how the limits must be treated, four values are allowed: GO_CSPLINE_NATURAL: first and least second derivatives are 0. -GO_CSPLINE_PARABOLIC: the curve will be a parabole arc outside of the limits. +GO_CSPLINE_PARABOLIC: the curve will be a parabolic arc outside of the limits. GO_CSPLINE_CUBIC: the curve will be cubic outside of the limits. GO_CSPLINE_CLAMPED: the first and last derivatives are imposed.

 
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

x

the x values

 

y

the y values

 

n

the number of x and y values

 

limits

how the limits must be treated, four values are allowed: +GO_CSPLINE_NATURAL: first and least second derivatives are 0. +GO_CSPLINE_PARABOLIC: the curve will be a parabolic arc outside of the limits. +GO_CSPLINE_CUBIC: the curve will be cubic outside of the limits. +GO_CSPLINE_CLAMPED: the first and last derivatives are imposed.

 

c0

the first derivative when using clamped splines, not used in the +other limit types.

 

cn

the first derivative when using clamped splines, not used in the +other limit types.

 
+
+
+

Returns

+

a newly created GOCSpline instance which should be +destroyed by a call to go_cspline_destroy.

+
diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-File-utilities.html goffice-0.10.57/docs/reference/html/goffice-0.10-File-utilities.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-File-utilities.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-File-utilities.html 2024-02-11 17:19:37.000000000 +0000 @@ -296,7 +296,8 @@

Returns

-

a string that the caller is responsible for freeing.

+

UTF-8 encoded basename.

+

[transfer full]


@@ -323,7 +324,7 @@

brief

-

if TRUE, hide "file://" if present.

+

if TRUE, hide "file://" if present.

  @@ -331,7 +332,8 @@

Returns

-

dirname which the caller is responsible for freeing.

+

UTF-8 encoded directory part.

+

[transfer full]


@@ -546,8 +548,8 @@

Returns

-

the mime type for the file as a newly allocated string. Needs to -be freed with g_free().

+

the mime type for the file.

+

[transfer full]


@@ -580,8 +582,8 @@

Returns

-

the mime type for the data as a newly allocated string. Needs to -be freed with g_free().

+

the mime type for the data.

+

[transfer full]


@@ -606,9 +608,10 @@

Returns

-

the description for the mime type as a newly allocated string. -Needs to be freed with g_free(). If the description is not found, the -mime type itself will be returned.

+

the description for the mime type. If the +description is not found, a copy of the mime type itself will be +returned.

+

[transfer full]


diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-GLib-extras.html goffice-0.10.57/docs/reference/html/goffice-0.10-GLib-extras.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-GLib-extras.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-GLib-extras.html 2024-02-11 17:19:37.000000000 +0000 @@ -590,8 +590,8 @@

passwd

-

The buffer to clear

-  +

The buffer to clear.

+[transfer none] @@ -603,7 +603,7 @@ go_get_real_name (void);

Returns

-

a utf8 encoded string with the current user name.

+

a UTF-8 encoded string with the current user name.

[transfer none]

@@ -969,7 +969,7 @@

go_object_properties_free ()

void
 go_object_properties_free (GSList *props);
-

Unsezts the values in the list which needs to be a list of alternating +

Unsets the values in the list which needs to be a list of alternating GParamSpec and GValue.

Parameters

diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-GOQuad.html goffice-0.10.57/docs/reference/html/goffice-0.10-GOQuad.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-GOQuad.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-GOQuad.html 2024-02-11 17:19:37.000000000 +0000 @@ -783,7 +783,7 @@

state

-

state pointer from go_quad_startl.

+

state pointer from go_quad_start.

 
@@ -843,7 +843,7 @@

This stores the value h in res . As an exception, this may be called -outside go_quad_startl and go_quad_endl sections.

+outside go_quad_start and go_quad_end sections.

Parameters

@@ -1107,11 +1107,11 @@

go_quad_startl ()

void *
 go_quad_startl (void);
-

Initializes GOQuadl arithmetic. Any use of GOQuadl must occur between calls -to go_quad_startl() and go_quad_endl().

+

Initializes GOQuad arithmetic. Any use of GOQuad must occur between calls +to go_quad_startl() and go_quad_end().

Returns

-

a pointer to pass to go_quad_endl() when done.

+

a pointer to pass to go_quad_end() when done.

[transfer full]

@@ -1244,7 +1244,7 @@

Returns

closest double precision value to a . As an exception, -this may be called outside go_quad_startl and go_quad_endl sections.

+this may be called outside go_quad_start and go_quad_end sections.


@@ -1768,14 +1768,14 @@

go_quad_exp ()

void
 go_quad_exp (GOQuad *res,
-             double *exp2,
+             double *expb,
              const GOQuad *a);

This function computes the exponential function at a , storing the result in res -. If the optional exp2 +. If the optional expb is supplied, it is used to return a -power of 2 by which the result should be scaled. This is useful to +power of radix by which the result should be scaled. This is useful to represent results much, much bigger than double precision can handle.

Parameters

@@ -1792,8 +1792,8 @@
- - + + @@ -1810,14 +1810,14 @@

go_quad_expl ()

void
 go_quad_expl (GOQuadl *res,
-              long double *exp2,
+              long double *expb,
               const GOQuadl *a);

This function computes the exponential function at a , storing the result in res -. If the optional exp2 +. If the optional expb is supplied, it is used to return a -power of 2 by which the result should be scaled. This is useful to +power of radix by which the result should be scaled. This is useful to represent results much, much bigger than double precision can handle.

Parameters

@@ -1834,8 +1834,8 @@
- - + + @@ -1985,7 +1985,7 @@ const GOQuad *a, const GOQuad *b);

This function computes the square root of a -^2 plugs b +^2 plus b ^2, storing the result in res .

@@ -2025,7 +2025,7 @@ const GOQuadl *a, const GOQuadl *b);

This function computes the square root of a -^2 plugs b +^2 plus b ^2, storing the result in res .

@@ -2128,17 +2128,19 @@

go_quad_pow ()

void
 go_quad_pow (GOQuad *res,
-             double *exp2,
+             double *expb,
              const GOQuad *x,
              const GOQuad *y);

This function computes x to the power of y , storing the result in res . -If the optional exp2 - is supplied, it is used to return a power of 2 by -which the result should be scaled. This is useful to represent results -much, much bigger than double precision can handle.

+If the optional expb + is supplied, it is used to return a power of radix +by which the result should be scaled. Such scaling can be done with the +scalbn function, typically after combining multiple such terms. This is +useful to represent results much, much bigger than double precision can +handle.

Parameters

[out]

exp2

(allow-none): power-of-2 result scaling location.

expb

(allow-none): power-of-base result scaling location.

[out]
[out]

exp2

(allow-none): power-of-2 result scaling location.

expb

(allow-none): power-of-base result scaling location.

[out]
@@ -2154,8 +2156,8 @@ - - + + @@ -2177,17 +2179,19 @@

go_quad_powl ()

void
 go_quad_powl (GOQuadl *res,
-              long double *exp2,
+              long double *expb,
               const GOQuadl *x,
               const GOQuadl *y);

This function computes x to the power of y , storing the result in res . -If the optional exp2 - is supplied, it is used to return a power of 2 by -which the result should be scaled. This is useful to represent results -much, much bigger than double precision can handle.

+If the optional expb + is supplied, it is used to return a power of radix +by which the result should be scaled. Such scaling can be done with the +scalbn function, typically after combining multiple such terms. This is +useful to represent results much, much bigger than double precision can +handle.

Parameters

[out]

exp2

(allow-none): power-of-2 result scaling location.

expb

(allow-none): power-of-base result scaling location.

[out]
@@ -2203,8 +2207,8 @@ - - + + diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-GORange.html goffice-0.10.57/docs/reference/html/goffice-0.10-GORange.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-GORange.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-GORange.html 2024-02-11 17:19:37.000000000 +0000 @@ -381,6 +381,39 @@ go_range_averagel (long double const *xs, int n, long double *res); +
+

Parameters

+
[out]

exp2

(allow-none): power-of-2 result scaling location.

expb

(allow-none): power-of-base result scaling location.

[out]
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The average of +the input values will be stored in res +.

+

@@ -421,6 +454,32 @@
int
 go_range_constantl (long double const *xs,
                     int n);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 
+
+
+

Returns

+

1 if range is constant, 0 otherwise.

+

@@ -461,6 +520,32 @@
int
 go_range_decreasingl (long double const *xs,
                       int n);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 
+
+
+

Returns

+

1 if range is decreasing, 0 otherwise.

+

@@ -510,6 +595,39 @@ go_range_devsql (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The sum of the input +values deviation from the mean will be stored in res +.

+

@@ -633,6 +751,45 @@ int n, long double *res, long double f); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

xs

values, which must be sorted.

[array length=n]

n

number of values

 

res

result.

[out]

f

fractile

 
+
+
+

Returns

+

0 unless an error occurred. This function computes +the interpolated fractile given by f +and stores it in res +.

+

@@ -642,6 +799,45 @@ int n, long double *res, long double f); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]

f

fractile

 
+
+
+

Returns

+

0 unless an error occurred. This function computes +the interpolated fractile given by f +and stores it in res +.

+

@@ -682,6 +878,32 @@
int
 go_range_increasingl (long double const *xs,
                       int n);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 
+
+
+

Returns

+

1 if range is increasing, 0 otherwise.

+

@@ -772,6 +994,39 @@ go_range_maxabsl (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The maximum of the absolute +values of the input values will be stored in res +.

+

@@ -780,6 +1035,39 @@ go_range_maxl (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The maximum of +the input values will be stored in res +.

+

@@ -886,6 +1174,39 @@ go_range_median_inter_sortedl (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values, which must be sorted.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. This function computes +the interpolated median and stores it in res +.

+

@@ -894,6 +1215,39 @@ go_range_median_interl (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. This function computes +the interpolated median and stores it in res +.

+

@@ -943,6 +1297,39 @@ go_range_minl (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The minimum of +the input values will be stored in res +.

+

@@ -1006,6 +1393,39 @@ go_range_suml (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The arithmetic sum of the input +values will be stored in res +.

+

@@ -1055,6 +1475,39 @@ go_range_sumsql (long double const *xs, int n, long double *res); +
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 

res

result.

[out]
+
+
+

Returns

+

0 unless an error occurred. The arithmetic sum of the squares +of the input values will be stored in res +.

+

@@ -1095,6 +1548,32 @@
int
 go_range_vary_uniformlyl (long double const *xs,
                           int n);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

xs

values.

[array length=n]

n

number of values

 
+
+
+

Returns

+

1 if range is either decreasing or increasing, 0 otherwise.

+
diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-GORegression.html goffice-0.10.57/docs/reference/html/goffice-0.10-GORegression.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-GORegression.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-GORegression.html 2024-02-11 17:19:37.000000000 +0000 @@ -423,8 +423,8 @@

stat_

-

non-NULL storage for additional results.

-  +

storage for additional results.

+[out][optional] @@ -491,8 +491,8 @@

stat_

-

non-NULL storage for additional results.

-  +

storage for additional results.

+[out][optional] @@ -513,6 +513,62 @@ gboolean affine, long double *res, go_regression_stat_tl *stat_); +

Performs one-dimensional linear regressions on the input points as +go_exponential_regression, but returns the logarithm of the coefficients instead +or the coefficients themselves. +Fits to "y = b * exp (m1*x1) * ... * exp (md*xd) " or equivalently to +"ln y = ln b + x1 * m1 + ... + xd * md".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

xss

x-vectors (i.e. independent data)

 

dim

number of x-vectors

 

ys

y-vector (dependent data)

 

n

number of data points

 

affine

if TRUE, a non-one multiplier is allowed

 

res

output place for constant[0] and root1[1], root2[2],... There will be dim+1 results.

 

stat_

storage for additional results.

[out][optional]
+
+
+

Returns

+

GORegressionResult as above.

+

@@ -525,6 +581,60 @@ gboolean affine, long double *res, go_regression_stat_tl *stat_); +

Performs one-dimensional linear regressions on the input points. +Fits to "y = b * m1^x1 * ... * md^xd " or equivalently to +"log y = log b + x1 * log m1 + ... + xd * log md".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

xss

x-vectors (i.e. independent data)

 

dim

number of x-vectors

 

ys

y-vector (dependent data)

 

n

number of data points

 

affine

if TRUE, a non-one multiplier is allowed

 

res

output place for constant[0] and root1[1], root2[2],... There will be dim+1 results.

 

stat_

storage for additional results.

[out][optional]
+
+
+

Returns

+

GORegressionResult as above.

+

@@ -580,7 +690,7 @@

stat_

-

non-NULL storage for additional results.

+

storage for additional results.

[out] @@ -602,6 +712,59 @@ gboolean affine, long double *res, go_regression_stat_tl *stat_); +

Performs multi-dimensional linear regressions on the input points. +Fits to "y = b + a1 * x1 + ... ad * xd".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

xss

x-vectors (i.e. independent data)

 

dim

number of x-vectors.

 

ys

y-vector. (Dependent data.)

 

n

number of data points.

 

affine

if true, a non-zero constant is allowed.

 

res

place for constant[0] and slope1[1], slope2[2],... There will be dim+1 results.

[out]

stat_

storage for additional results.

[out]
+
+
+

Returns

+

GORegressionResult as above.

+

@@ -725,6 +888,57 @@ const long double *ys, int n, long double *res); +

Performs a two-dimensional non-linear fitting on the input points. +Fits to "y = a + b * ln (sign * (x - c))", with sign in {-1, +1}. +The graph is a logarithmic curve moved horizontally by c and possibly +mirrored across the y-axis (if sign = -1).

+

Fits c (and sign) by iterative trials, but seems to be fast enough even +for automatic recomputation.

+

Adapts c until a local minimum of squared residuals is reached. For each +new c tried out the corresponding a and b are calculated by linear +regression. If no local minimum is found, an error is returned. If there +is more than one local minimum, the one found is not necessarily the +smallest (i.e., there might be cases in which the returned fit is not the +best possible). If the shape of the point cloud is to different from +``logarithmic'', either sign can not be determined (error returned) or no +local minimum will be found.

+

(Requires: at least 3 different x values, at least 3 different y values.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

xs

x-vector (i.e. independent data)

 

ys

y-vector (dependent data)

 

n

number of data points

 

res

output place for sign[0], a[1], b[2], c[3], and sum of squared residuals[4].

 
+
+
+

Returns

+

GORegressionResult as above.

+

@@ -784,8 +998,8 @@

stat_

-

non-NULL storage for additional results.

-  +

storage for additional results.

+[out][optional]
@@ -806,6 +1020,63 @@ gboolean affine, long double *res, go_regression_stat_tl *stat_); +

This is almost a copy of linear_regression and produces multi-dimensional +linear regressions on the input points after transforming xss to ln(xss). +Fits to "y = b + a1 * z1 + ... ad * zd" with "zi = ln (xi)". +Problems with arrays in the calling function: see comment to +gnumeric_linest, which is also valid for gnumeric_logreg.

+

(Errors: less than two points, all points on a vertical line, non-positive x data.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

xss

x-vectors (i.e. independent data)

 

dim

number of x-vectors

 

ys

y-vector (dependent data)

 

n

number of data points

 

affine

if TRUE, a non-zero constant is allowed

 

res

output place for constant[0] and factor1[1], factor2[2],... There will be dim+1 results.

 

stat_

storage for additional results.

[out][optional]
+
+
+

Returns

+

GORegressionResult as above.

+

@@ -1078,8 +1349,8 @@

stat_

-

non-NULL storage for additional results.

-  +

storage for additional results.

+[out][optional]
@@ -1100,6 +1371,60 @@ gboolean affine, long double *res, go_regression_stat_tl *stat_); +

Performs one-dimensional linear regressions on the input points. +Fits to "y = b * x1^m1 * ... * xd^md " or equivalently to +"log y = log b + m1 * log x1 + ... + md * log xd".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

xss

x-vectors (i.e. independent data)

 

dim

number of x-vectors

 

ys

y-vector (dependent data)

 

n

number of data points

 

affine

if TRUE, a non-one multiplier is allowed

 

res

output place for constant[0] and root1[1], root2[2],... There will be dim+1 results.

 

stat_

storage for additional results.

[out][optional]
+
+
+

Returns

+

GORegressionResult as above.

+

diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-Geometry-helpers.html goffice-0.10.57/docs/reference/html/goffice-0.10-Geometry-helpers.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-Geometry-helpers.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-Geometry-helpers.html 2024-02-11 17:19:37.000000000 +0000 @@ -204,7 +204,7 @@

Returns

-

TRUE for GO_DIRECTION_DOWN or GO_DIRECTION_RIGHT.

+

TRUE for GO_DIRECTION_DOWN or GO_DIRECTION_RIGHT.


@@ -229,7 +229,7 @@

Returns

-

TRUE for GO_DIRECTION_LEFT and GO_DIRECTION_RIGHT.

+

TRUE for GO_DIRECTION_LEFT and GO_DIRECTION_RIGHT.


@@ -251,8 +251,8 @@

aabr0

-

a GOGeometryAABR

-  +

a GOGeometryAABR.

+[inout]

aabr1

@@ -288,8 +288,8 @@

aabr

-

a GOGeometryAABR

-  +

a GOGeometryAABR.

+[out] @@ -412,13 +412,13 @@

rho

-

polar coordinate

-  +

polar coordinate.

+[out]

theta

-

polar coordinate

-  +

polar coordinate.

+[out] diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-LibXML-extras.html goffice-0.10.57/docs/reference/html/goffice-0.10-LibXML-extras.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-LibXML-extras.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-LibXML-extras.html 2024-02-11 17:19:37.000000000 +0000 @@ -239,7 +239,7 @@

Returns

the child with name as name if any.

-

[transfer none]

+

[transfer none][nullable]


@@ -274,9 +274,9 @@

Returns

the child with name -as name and with "xml:lang" -attribute corresponding to the preferred language.

-

[transfer none]

+as name and +with "xml:lang" attribute corresponding to the preferred language.

+

[transfer none][nullable]


@@ -311,9 +311,9 @@

Returns

the child with name -as name and withou "xml:lang" -attribute if any.

-

[transfer none]

+as name and +without "xml:lang" attribute if any.

+

[transfer none][nullable]


@@ -364,7 +364,7 @@

Returns

the attribute value.

-

[transfer full]

+

[transfer full][nullable]


@@ -562,7 +562,7 @@

Returns

A libxml2 xmlDocPtr or NULL.

-

[transfer full]

+

[transfer full][nullable]

diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-Line.html goffice-0.10.57/docs/reference/html/goffice-0.10-Line.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-Line.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-Line.html 2024-02-11 17:19:37.000000000 +0000 @@ -176,9 +176,9 @@

Returns

-

a pointer to the user readable name of the dash type, -or the name of GO_LINE_NONE if type is invalid. The returned -string should not be freed.

+

user readable name of the dash type, +or the name of GO_LINE_NONE if type is invalid.

+

[transfer none]


@@ -203,8 +203,9 @@

Returns

-

a pointer to the nickname of the dash type, or "none" if -type is invalid. The returning string should not be freed.

+

nickname of the dash type, or "none" if +type is invalid.

+

[transfer none]


@@ -288,11 +289,12 @@

Returns

-

a struct containing the dash sequence corresponding to type -, -or NULL if type is invalid or equal to GO_LINE_NONE. -The lengths are scaled according to scale -.

+

a struct containing the dash +sequence corresponding to type +, or NULL if type is invalid or +equal to GO_LINE_NONE. The lengths are scaled according to scale +.

+

[transfer full][nullable]


@@ -339,10 +341,10 @@

Returns

-

a pointer to the label of type +

label of type , or the name of -GO_LINE_INTERPOLATION_LINEAR if type is invalid. -The returned string should not be freed.

+GO_LINE_INTERPOLATION_LINEAR if type is invalid.

+

[transfer none]


@@ -367,9 +369,10 @@

Returns

-

a pointer to the nickname of type +

nickname of type , or "linear" if type -is invalid. The returned string should not be freed.

+is invalid.

+

[transfer none]


@@ -394,8 +397,8 @@

Returns

-

TRUE if the line interpolation type forces skipping invalid -data, FALSE if it is only optional.

+

TRUE if the line interpolation type forces skipping invalid +data, FALSE if it is only optional.


@@ -447,8 +450,8 @@

Returns

-

TRUE if the line interpolation type can be used with radial -axes set, FALSE if it can't.

+

TRUE if the line interpolation type can be used with radial +axes set, FALSE if it cannot.

diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-Mathematics.html goffice-0.10.57/docs/reference/html/goffice-0.10-Mathematics.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-Mathematics.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-Mathematics.html 2024-02-11 17:19:37.000000000 +0000 @@ -449,7 +449,7 @@

go_add_epsilon ()

double
 go_add_epsilon (double x);
-

Returns the next-smaller representable value, except that zero and +

Returns the next-larger representable value, except that zero and infinites are returned unchanged.

Parameters

@@ -496,6 +496,30 @@
double
 go_ascii_strtod (const char *s,
                  char **end);
+

Like g_ascii_strtod, but without hex notation and MS extensions. +There is no need to reset errno before calling this.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

s

string to convert

 

end

optional pointer to end of string.

 
+

@@ -503,6 +527,31 @@
long double
 go_ascii_strtold (const char *s,
                   char **end);
+

Like strtold, but without hex notation and MS extensions and also +assuming "C" locale. +Unlike strtold, there is no need to reset errno before calling this.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

s

string to convert

 

end

optional pointer to end of string.

 
+

@@ -510,6 +559,35 @@
double
 go_atan2pi (double y,
             double x);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

y

a number

 

x

a number

 
+
+
+

Returns

+

the polar angle of the point (x +,y +) in radians divided by Pi. +The result is a number between -1 and +1.

+

@@ -517,18 +595,89 @@
long double
 go_atan2pil (long double y,
              long double x);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

y

a number

 

x

a number

 
+
+
+

Returns

+

the polar angle of the point (x +,y +) in radians divided by Pi. +The result is a number between -1 and +1.

+

go_atanpi ()

double
 go_atanpi (double x);
+
+

Parameters

+
+++++ + + + + + +

x

a number

 
+
+
+

Returns

+

the arc tangent of x +in radians divided by Pi. The result is a +number between -1 and +1.

+

go_atanpil ()

long double
 go_atanpil (long double x);
+
+

Parameters

+
+++++ + + + + + +

x

a number

 
+
+
+

Returns

+

the arc tangent of x +in radians divided by Pi. The result is a +number between -1 and +1.

+

@@ -598,12 +747,54 @@

go_cotpi ()

double
 go_cotpi (double x);
+
+

Parameters

+
+++++ + + + + + +

x

a number

 
+
+
+

Returns

+

the cotangent of Pi times x +, but with less error than doing the +multiplication outright.

+

go_cotpil ()

long double
 go_cotpil (long double x);
+
+

Parameters

+
+++++ + + + + + +

x

a number

 
+
+
+

Returns

+

the cotangent of Pi times x +, but with less error than doing the +multiplication outright.

+

@@ -618,24 +809,116 @@

go_fake_ceil ()

double
 go_fake_ceil (double x);
+
+

Parameters

+
+++++ + + + + + +

x

value to ceil

 
+
+
+

Returns

+

the ceiling of x +, ie., the smallest integer that is not smaller +than x +. However, this variant applies a 1 ulp grace interval for +values that are just a hair larger than an integer.

+

go_fake_ceill ()

long double
 go_fake_ceill (long double x);
+
+

Parameters

+
+++++ + + + + + +

x

value to ceil

 
+
+
+

Returns

+

the ceiling of x +, ie., the smallest integer that is not smaller +than x +. However, this variant applies a 1 ulp grace interval for +values that are just a hair larger than an integer.

+

go_fake_floor ()

double
 go_fake_floor (double x);
+
+

Parameters

+
+++++ + + + + + +

x

value to floor

 
+
+
+

Returns

+

the floor of x +, ie., the largest integer that is not larger +than x +. However, this variant applies a 1 ulp grace interval for +values that are just a hair less than an integer.

+

go_fake_floorl ()

long double
 go_fake_floorl (long double x);
+
+

Parameters

+
+++++ + + + + + +

x

value to floor

 
+
+
+

Returns

+

the floor of x +, ie., the largest integer that is not larger +than x +. However, this variant applies a 1 ulp grace interval for +values that are just a hair less than an integer.

+

@@ -698,24 +981,94 @@

go_pow10 ()

double
 go_pow10 (int n);
+

Computes 10 to the power of n +. This is fast and accurate (under the +reasonable assumption that the compiler is accurate).

+
+

Parameters

+
+++++ + + + + + +

n

exponent

 
+

go_pow10l ()

long double
 go_pow10l (int n);
+

Computes 10 to the power of n +. This is fast and accurate (under the +reasonable assumption that the compiler is accurate).

+
+

Parameters

+
+++++ + + + + + +

n

exponent

 
+

go_pow2 ()

double
 go_pow2 (int n);
+

Computes 2 to the power of n +. This is fast and accurate.

+
+

Parameters

+
+++++ + + + + + +

n

exponent

 
+

go_pow2l ()

long double
 go_pow2l (int n);
+

Computes 2 to the power of n +. This is fast and accurate.

+
+

Parameters

+
+++++ + + + + + +

n

exponent

 
+

@@ -738,6 +1091,34 @@
double
 go_strtod (const char *s,
            char **end);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

s

string to convert

 

end

pointer to end of string.

[out][transfer none][optional]
+
+
+

Returns

+

the numeric value of the given string. +Like strtod, but without hex notation and MS extensions. +Unlike strtod, there is no need to reset errno before calling this.

+

@@ -745,6 +1126,34 @@
long double
 go_strtold (const char *s,
             char **end);
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

s

string to convert

 

end

pointer to end of string.

[out][transfer none][optional]
+
+
+

Returns

+

the numeric value of the given string. +Like strtold, but without hex notation and MS extensions. +Unlike strtold, there is no need to reset errno before calling this.

+

diff -Nru goffice-0.10.56/docs/reference/html/goffice-0.10-URL-utilities.html goffice-0.10.57/docs/reference/html/goffice-0.10-URL-utilities.html --- goffice-0.10.56/docs/reference/html/goffice-0.10-URL-utilities.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/goffice-0.10-URL-utilities.html 2024-02-11 17:19:37.000000000 +0000 @@ -167,7 +167,8 @@

Returns

-

an encoded string which the caller is responsible for freeing.

+

encoded string.

+

[transfer full]


diff -Nru goffice-0.10.56/docs/reference/html/gsf-index.html goffice-0.10.57/docs/reference/html/gsf-index.html --- goffice-0.10.56/docs/reference/html/gsf-index.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/gsf-index.html 2024-02-11 17:19:37.000000000 +0000 @@ -209,752 +209,752 @@

A

-
acosh, acosh () +
acosh, acosh ()
-
asinh, asinh () +
asinh, asinh ()
-
atanh, atanh () +
atanh, atanh ()

E

-
expm1, expm1 () +
expm1, expm1 ()

F

-
frexpl, frexpl () +
frexpl, frexpl ()

G

-
GOAccumulator, GOAccumulator +
GOAccumulator, GOAccumulator
-
GOAccumulatorl, GOAccumulatorl +
GOAccumulatorl, GOAccumulatorl
-
GOAnchorType, enum GOAnchorType +
GOAnchorType, enum GOAnchorType
-
GOArrow, GOArrow +
GOArrow, GOArrow
-
GOArrowSel, GOArrowSel +
GOArrowSel, GOArrowSel
-
GOArrowSel:arrow, The “arrow” property +
GOArrowSel:arrow, The “arrow” property
-
GOArrowType, enum GOArrowType +
GOArrowType, enum GOArrowType
-
GOBasisType, enum GOBasisType +
GOBasisType, enum GOBasisType
-
GOBezierSpline, GOBezierSpline +
GOBezierSpline, GOBezierSpline
-
GOCalendarButton, GOCalendarButton +
GOCalendarButton, GOCalendarButton
-
GOCalendarButton::changed, The “changed” signal +
GOCalendarButton::changed, The “changed” signal
-
GocArc, GocArc +
GocArc, GocArc
-
GocArc:ang1, The “ang1” property +
GocArc:ang1, The “ang1” property
-
GocArc:ang2, The “ang2” property +
GocArc:ang2, The “ang2” property
-
GocArc:end-arrow, The “end-arrow” property +
GocArc:end-arrow, The “end-arrow” property
-
GocArc:rotation, The “rotation” property +
GocArc:rotation, The “rotation” property
-
GocArc:start-arrow, The “start-arrow” property +
GocArc:start-arrow, The “start-arrow” property
-
GocArc:type, The “type” property +
GocArc:type, The “type” property
-
GocArc:xc, The “xc” property +
GocArc:xc, The “xc” property
-
GocArc:xr, The “xr” property +
GocArc:xr, The “xr” property
-
GocArc:yc, The “yc” property +
GocArc:yc, The “yc” property
-
GocArc:yr, The “yr” property +
GocArc:yr, The “yr” property
-
GocArcClass, GocArcClass +
GocArcClass, GocArcClass
-
GocCanvas, GocCanvas +
GocCanvas, GocCanvas
-
GocCanvas:height, The “height” property +
GocCanvas:height, The “height” property
-
GocCanvas:width, The “width” property +
GocCanvas:width, The “width” property
-
GocCanvasClass, GocCanvasClass +
GocCanvasClass, GocCanvasClass
-
GocCircle, GocCircle +
GocCircle, GocCircle
-
GocCircle:radius, The “radius” property +
GocCircle:radius, The “radius” property
-
GocCircle:x, The “x” property +
GocCircle:x, The “x” property
-
GocCircle:y, The “y” property +
GocCircle:y, The “y” property
-
GocCircleClass, GocCircleClass +
GocCircleClass, GocCircleClass
-
GocDirection, enum GocDirection +
GocDirection, enum GocDirection
-
GocEllipse, GocEllipse +
GocEllipse, GocEllipse
-
GocEllipse:height, The “height” property +
GocEllipse:height, The “height” property
-
GocEllipse:rotation, The “rotation” property +
GocEllipse:rotation, The “rotation” property
-
GocEllipse:width, The “width” property +
GocEllipse:width, The “width” property
-
GocEllipse:x, The “x” property +
GocEllipse:x, The “x” property
-
GocEllipse:y, The “y” property +
GocEllipse:y, The “y” property
-
GocEllipseClass, GocEllipseClass +
GocEllipseClass, GocEllipseClass
-
GocGraph, GocGraph +
GocGraph, GocGraph
-
GocGraph:graph, The “graph” property +
GocGraph:graph, The “graph” property
-
GocGraph:height, The “height” property +
GocGraph:height, The “height” property
-
GocGraph:renderer, The “renderer” property +
GocGraph:renderer, The “renderer” property
-
GocGraph:width, The “width” property +
GocGraph:width, The “width” property
-
GocGraph:x, The “x” property +
GocGraph:x, The “x” property
-
GocGraph:y, The “y” property +
GocGraph:y, The “y” property
-
GocGraphClass, GocGraphClass +
GocGraphClass, GocGraphClass
-
GocGroup, GocGroup +
GocGroup, GocGroup
-
GocGroup:x, The “x” property +
GocGroup:x, The “x” property
-
GocGroup:y, The “y” property +
GocGroup:y, The “y” property
-
GocGroupClass, struct GocGroupClass +
GocGroupClass, struct GocGroupClass
-
GOCharmapSel, GOCharmapSel +
GOCharmapSel, GOCharmapSel
-
GOCharmapSel::charmap-changed, The “charmap-changed” signal +
GOCharmapSel::charmap-changed, The “charmap-changed” signal
-
GOCharmapSel:TestDirection, The “TestDirection” property +
GOCharmapSel:TestDirection, The “TestDirection” property
-
GOCharmapSelTestDirection, enum GOCharmapSelTestDirection +
GOCharmapSelTestDirection, enum GOCharmapSelTestDirection
-
GocIntArray, GocIntArray +
GocIntArray, GocIntArray
-
GocItem, GocItem +
GocItem, GocItem
-
GocItem:canvas, The “canvas” property +
GocItem:canvas, The “canvas” property
-
GocItem:parent, The “parent” property +
GocItem:parent, The “parent” property
-
GocItemClass, struct GocItemClass +
GocItemClass, struct GocItemClass
-
GocLine, GocLine +
GocLine, GocLine
-
GocLine:end-arrow, The “end-arrow” property +
GocLine:end-arrow, The “end-arrow” property
-
GocLine:start-arrow, The “start-arrow” property +
GocLine:start-arrow, The “start-arrow” property
-
GocLine:x0, The “x0” property +
GocLine:x0, The “x0” property
-
GocLine:x1, The “x1” property +
GocLine:x1, The “x1” property
-
GocLine:y0, The “y0” property +
GocLine:y0, The “y0” property
-
GocLine:y1, The “y1” property +
GocLine:y1, The “y1” property
-
GocLineClass, GocLineClass +
GocLineClass, GocLineClass
-
GOColor, GOColor +
GOColor, GOColor
-
GOColorGroup, GOColorGroup +
GOColorGroup, GOColorGroup
-
GOColorGroup::history-changed, The “history-changed” signal +
GOColorGroup::history-changed, The “history-changed” signal
-
GOComboBox, struct GOComboBox +
GOComboBox, struct GOComboBox
-
GOComboBox::pop-down-done, The “pop-down-done” signal +
GOComboBox::pop-down-done, The “pop-down-done” signal
-
GOComboBox:show-arrow, The “show-arrow” property +
GOComboBox:show-arrow, The “show-arrow” property
-
GOComboBox:title, The “title” property +
GOComboBox:title, The “title” property
-
GOComboBoxClass, struct GOComboBoxClass +
GOComboBoxClass, struct GOComboBoxClass
-
GOComboColor, GOComboColor +
GOComboColor, GOComboColor
-
GOComboColor::color-changed, The “color-changed” signal +
GOComboColor::color-changed, The “color-changed” signal
-
GOComboColor::display-custom-dialog, The “display-custom-dialog” signal +
GOComboColor::display-custom-dialog, The “display-custom-dialog” signal
-
GOComboPixmaps, GOComboPixmaps +
GOComboPixmaps, GOComboPixmaps
-
GOComboPixmaps::changed, The “changed” signal +
GOComboPixmaps::changed, The “changed” signal
-
GOComponent, GOComponent +
GOComponent, GOComponent
-
GOComponent::changed, The “changed” signal +
GOComponent::changed, The “changed” signal
-
GOComponent:ascent, The “ascent” property +
GOComponent:ascent, The “ascent” property
-
GOComponent:descent, The “descent” property +
GOComponent:descent, The “descent” property
-
GOComponent:height, The “height” property +
GOComponent:height, The “height” property
-
GOComponent:inline, The “inline” property +
GOComponent:inline, The “inline” property
-
GOComponent:mime-type, The “mime-type” property +
GOComponent:mime-type, The “mime-type” property
-
GOComponent:width, The “width” property +
GOComponent:width, The “width” property
-
GOComponentClass, GOComponentClass +
GOComponentClass, GOComponentClass
-
GOComponentSaxHandler, GOComponentSaxHandler () +
GOComponentSaxHandler, GOComponentSaxHandler ()
-
GoCouponConvention, GoCouponConvention +
GoCouponConvention, GoCouponConvention
-
GocPixbuf, GocPixbuf +
GocPixbuf, GocPixbuf
-
GocPixbuf:height, The “height” property +
GocPixbuf:height, The “height” property
-
GocPixbuf:pixbuf, The “pixbuf” property +
GocPixbuf:pixbuf, The “pixbuf” property
-
GocPixbuf:width, The “width” property +
GocPixbuf:width, The “width” property
-
GocPixbuf:x, The “x” property +
GocPixbuf:x, The “x” property
-
GocPixbuf:y, The “y” property +
GocPixbuf:y, The “y” property
-
GocPixbufClass, GocPixbufClass +
GocPixbufClass, GocPixbufClass
-
GocPoint, GocPoint +
GocPoint, GocPoint
-
GocPoints, GocPoints +
GocPoints, GocPoints
-
GocPolygon, GocPolygon +
GocPolygon, GocPolygon
-
GocPolygon:fill-rule, The “fill-rule” property +
GocPolygon:fill-rule, The “fill-rule” property
-
GocPolygon:points, The “points” property +
GocPolygon:points, The “points” property
-
GocPolygon:sizes, The “sizes” property +
GocPolygon:sizes, The “sizes” property
-
GocPolygon:use-spline, The “use-spline” property +
GocPolygon:use-spline, The “use-spline” property
-
GocPolygonClass, GocPolygonClass +
GocPolygonClass, GocPolygonClass
-
GocPolyline, GocPolyline +
GocPolyline, GocPolyline
-
GocPolyline:points, The “points” property +
GocPolyline:points, The “points” property
-
GocPolyline:use-spline, The “use-spline” property +
GocPolyline:use-spline, The “use-spline” property
-
GocPolylineClass, GocPolylineClass +
GocPolylineClass, GocPolylineClass
-
GocRect, GocRect +
GocRect, GocRect
-
GocRectangle, GocRectangle +
GocRectangle, GocRectangle
-
GocRectangle:height, The “height” property +
GocRectangle:height, The “height” property
-
GocRectangle:rotation, The “rotation” property +
GocRectangle:rotation, The “rotation” property
-
GocRectangle:rx, The “rx” property +
GocRectangle:rx, The “rx” property
-
GocRectangle:ry, The “ry” property +
GocRectangle:ry, The “ry” property
-
GocRectangle:type, The “type” property +
GocRectangle:type, The “type” property
-
GocRectangle:width, The “width” property +
GocRectangle:width, The “width” property
-
GocRectangle:x, The “x” property +
GocRectangle:x, The “x” property
-
GocRectangle:y, The “y” property +
GocRectangle:y, The “y” property
-
GocRectangleClass, GocRectangleClass +
GocRectangleClass, GocRectangleClass
-
GOCSplineType, enum GOCSplineType +
GOCSplineType, enum GOCSplineType
-
GocStyledItem, GocStyledItem +
GocStyledItem, GocStyledItem
-
GocStyledItem::style-changed, The “style-changed” signal +
GocStyledItem::style-changed, The “style-changed” signal
-
GocStyledItem:scale-line-width, The “scale-line-width” property +
GocStyledItem:scale-line-width, The “scale-line-width” property
-
GocStyledItem:style, The “style” property +
GocStyledItem:style, The “style” property
-
GocStyledItemClass, struct GocStyledItemClass +
GocStyledItemClass, struct GocStyledItemClass
-
GocText, GocText +
GocText, GocText
-
GocText:anchor, The “anchor” property +
GocText:anchor, The “anchor” property
-
GocText:attributes, The “attributes” property +
GocText:attributes, The “attributes” property
-
GocText:clip, The “clip” property +
GocText:clip, The “clip” property
-
GocText:clip-height, The “clip-height” property +
GocText:clip-height, The “clip-height” property
-
GocText:clip-width, The “clip-width” property +
GocText:clip-width, The “clip-width” property
-
GocText:rotation, The “rotation” property +
GocText:rotation, The “rotation” property
-
GocText:text, The “text” property +
GocText:text, The “text” property
-
GocText:wrap-width, The “wrap-width” property +
GocText:wrap-width, The “wrap-width” property
-
GocText:x, The “x” property +
GocText:x, The “x” property
-
GocText:y, The “y” property +
GocText:y, The “y” property
-
GocTextClass, GocTextClass +
GocTextClass, GocTextClass
-
GocWidget, GocWidget +
GocWidget, GocWidget
-
GocWidget:height, The “height” property +
GocWidget:height, The “height” property
-
GocWidget:widget, The “widget” property +
GocWidget:widget, The “widget” property
-
GocWidget:width, The “width” property +
GocWidget:width, The “width” property
-
GocWidget:x, The “x” property +
GocWidget:x, The “x” property
-
GocWidget:y, The “y” property +
GocWidget:y, The “y” property
-
GocWidgetClass, GocWidgetClass +
GocWidgetClass, GocWidgetClass
-
goc_canvas_c2w, goc_canvas_c2w () +
goc_canvas_c2w, goc_canvas_c2w ()
-
goc_canvas_get_bounds, goc_canvas_get_bounds () +
goc_canvas_get_bounds, goc_canvas_get_bounds ()
-
goc_canvas_get_cur_event, goc_canvas_get_cur_event () +
goc_canvas_get_cur_event, goc_canvas_get_cur_event ()
-
goc_canvas_get_direction, goc_canvas_get_direction () +
goc_canvas_get_direction, goc_canvas_get_direction ()
-
goc_canvas_get_document, goc_canvas_get_document () +
goc_canvas_get_document, goc_canvas_get_document ()
-
goc_canvas_get_grabbed_item, goc_canvas_get_grabbed_item () +
goc_canvas_get_grabbed_item, goc_canvas_get_grabbed_item ()
-
goc_canvas_get_height, goc_canvas_get_height () +
goc_canvas_get_height, goc_canvas_get_height ()
-
goc_canvas_get_item_at, goc_canvas_get_item_at () +
goc_canvas_get_item_at, goc_canvas_get_item_at ()
-
goc_canvas_get_pixels_per_unit, goc_canvas_get_pixels_per_unit () +
goc_canvas_get_pixels_per_unit, goc_canvas_get_pixels_per_unit ()
-
goc_canvas_get_realized, goc_canvas_get_realized () +
goc_canvas_get_realized, goc_canvas_get_realized ()
-
goc_canvas_get_root, goc_canvas_get_root () +
goc_canvas_get_root, goc_canvas_get_root ()
-
goc_canvas_get_scroll_position, goc_canvas_get_scroll_position () +
goc_canvas_get_scroll_position, goc_canvas_get_scroll_position ()
-
goc_canvas_get_width, goc_canvas_get_width () +
goc_canvas_get_width, goc_canvas_get_width ()
-
goc_canvas_grab_item, goc_canvas_grab_item () +
goc_canvas_grab_item, goc_canvas_grab_item ()
-
goc_canvas_invalidate, goc_canvas_invalidate () +
goc_canvas_invalidate, goc_canvas_invalidate ()
-
goc_canvas_invalidate_region, goc_canvas_invalidate_region () +
goc_canvas_invalidate_region, goc_canvas_invalidate_region ()
-
goc_canvas_render, goc_canvas_render () +
goc_canvas_render, goc_canvas_render ()
-
goc_canvas_scroll_to, goc_canvas_scroll_to () +
goc_canvas_scroll_to, goc_canvas_scroll_to ()
-
goc_canvas_set_direction, goc_canvas_set_direction () +
goc_canvas_set_direction, goc_canvas_set_direction ()
-
goc_canvas_set_document, goc_canvas_set_document () +
goc_canvas_set_document, goc_canvas_set_document ()
-
goc_canvas_set_pixels_per_unit, goc_canvas_set_pixels_per_unit () +
goc_canvas_set_pixels_per_unit, goc_canvas_set_pixels_per_unit ()
-
goc_canvas_ungrab_item, goc_canvas_ungrab_item () +
goc_canvas_ungrab_item, goc_canvas_ungrab_item ()
-
goc_canvas_w2c, goc_canvas_w2c () +
goc_canvas_w2c, goc_canvas_w2c ()
-
goc_group_add_child, goc_group_add_child () +
goc_group_add_child, goc_group_add_child ()
-
goc_group_adjust_bounds, goc_group_adjust_bounds () +
goc_group_adjust_bounds, goc_group_adjust_bounds ()
-
goc_group_adjust_coords, goc_group_adjust_coords () +
goc_group_adjust_coords, goc_group_adjust_coords ()
-
goc_group_cairo_transform, goc_group_cairo_transform () +
goc_group_cairo_transform, goc_group_cairo_transform ()
-
goc_group_clear, goc_group_clear () +
goc_group_clear, goc_group_clear ()
-
goc_group_find_child, goc_group_find_child () +
goc_group_find_child, goc_group_find_child ()
-
goc_group_freeze, goc_group_freeze () +
goc_group_freeze, goc_group_freeze ()
-
goc_group_get_child, goc_group_get_child () +
goc_group_get_child, goc_group_get_child ()
-
goc_group_get_children, goc_group_get_children () +
goc_group_get_children, goc_group_get_children ()
-
goc_group_new, goc_group_new () +
goc_group_new, goc_group_new ()
-
goc_group_remove_child, goc_group_remove_child () +
goc_group_remove_child, goc_group_remove_child ()
-
goc_group_set_clip_path, goc_group_set_clip_path () +
goc_group_set_clip_path, goc_group_set_clip_path ()
-
goc_int_array_new, goc_int_array_new () +
goc_int_array_new, goc_int_array_new ()
-
goc_int_array_ref, goc_int_array_ref () +
goc_int_array_ref, goc_int_array_ref ()
-
goc_int_array_unref, goc_int_array_unref () +
goc_int_array_unref, goc_int_array_unref ()
-
goc_item_bounds_changed, goc_item_bounds_changed () +
goc_item_bounds_changed, goc_item_bounds_changed ()
-
goc_item_copy, goc_item_copy () +
goc_item_copy, goc_item_copy ()
-
goc_item_destroy, goc_item_destroy () +
goc_item_destroy, goc_item_destroy ()
-
goc_item_distance, goc_item_distance () +
goc_item_distance, goc_item_distance ()
-
goc_item_draw, goc_item_draw () +
goc_item_draw, goc_item_draw ()
-
goc_item_draw_region, goc_item_draw_region () +
goc_item_draw_region, goc_item_draw_region ()
-
goc_item_duplicate, goc_item_duplicate () +
goc_item_duplicate, goc_item_duplicate ()
-
goc_item_get_bounds, goc_item_get_bounds () +
goc_item_get_bounds, goc_item_get_bounds ()
-
goc_item_get_operator, goc_item_get_operator () +
goc_item_get_operator, goc_item_get_operator ()
-
goc_item_get_parent, goc_item_get_parent () +
goc_item_get_parent, goc_item_get_parent ()
-
goc_item_get_style_context, goc_item_get_style_context () +
goc_item_get_style_context, goc_item_get_style_context ()
-
goc_item_get_window, goc_item_get_window () +
goc_item_get_window, goc_item_get_window ()
-
goc_item_grab, goc_item_grab () +
goc_item_grab, goc_item_grab ()
-
goc_item_hide, goc_item_hide () +
goc_item_hide, goc_item_hide ()
-
goc_item_invalidate, goc_item_invalidate () +
goc_item_invalidate, goc_item_invalidate ()
-
goc_item_is_visible, goc_item_is_visible () +
goc_item_is_visible, goc_item_is_visible ()
-
goc_item_lower, goc_item_lower () +
goc_item_lower, goc_item_lower ()
-
goc_item_lower_to_bottom, goc_item_lower_to_bottom () +
goc_item_lower_to_bottom, goc_item_lower_to_bottom ()
-
goc_item_new, goc_item_new () +
goc_item_new, goc_item_new ()
-
goc_item_raise, goc_item_raise () +
goc_item_raise, goc_item_raise ()
-
goc_item_raise_to_top, goc_item_raise_to_top () +
goc_item_raise_to_top, goc_item_raise_to_top ()
-
goc_item_set, goc_item_set () +
goc_item_set, goc_item_set ()
-
goc_item_set_operator, goc_item_set_operator () +
goc_item_set_operator, goc_item_set_operator ()
-
goc_item_set_transform, goc_item_set_transform () +
goc_item_set_transform, goc_item_set_transform ()
-
goc_item_set_visible, goc_item_set_visible () +
goc_item_set_visible, goc_item_set_visible ()
-
goc_item_show, goc_item_show () +
goc_item_show, goc_item_show ()
-
goc_item_ungrab, goc_item_ungrab () +
goc_item_ungrab, goc_item_ungrab ()
-
goc_points_new, goc_points_new () +
goc_points_new, goc_points_new ()
-
goc_points_ref, goc_points_ref () +
goc_points_ref, goc_points_ref ()
-
goc_points_unref, goc_points_unref () +
goc_points_unref, goc_points_unref ()
-
goc_styled_item_get_scale_line_width, goc_styled_item_get_scale_line_width () +
goc_styled_item_get_scale_line_width, goc_styled_item_get_scale_line_width ()
-
goc_styled_item_set_cairo_line, goc_styled_item_set_cairo_line () +
goc_styled_item_set_cairo_line, goc_styled_item_set_cairo_line ()
-
goc_styled_item_set_scale_line_width, goc_styled_item_set_scale_line_width () +
goc_styled_item_set_scale_line_width, goc_styled_item_set_scale_line_width ()
-
goc_widget_set_bounds, goc_widget_set_bounds () +
goc_widget_set_bounds, goc_widget_set_bounds ()
-
GOData, GOData +
GOData, GOData
-
GOData::changed, The “changed” signal +
GOData::changed, The “changed” signal
-
GODataMatrix, GODataMatrix +
GODataMatrix, GODataMatrix
-
GODataMatrixVal, GODataMatrixVal +
GODataMatrixVal, GODataMatrixVal
-
GODataScalar, GODataScalar +
GODataScalar, GODataScalar
-
GODataScalarStr, GODataScalarStr +
GODataScalarStr, GODataScalarStr
-
GODataScalarVal, GODataScalarVal +
GODataScalarVal, GODataScalarVal
-
GODataVector, GODataVector +
GODataVector, GODataVector
-
GODataVectorStr, GODataVectorStr +
GODataVectorStr, GODataVectorStr
-
GODataVectorVal, GODataVectorVal +
GODataVectorVal, GODataVectorVal
-
GODateConventions, GODateConventions +
GODateConventions, GODateConventions
-
GODirection, enum GODirection +
GODirection, enum GODirection
-
GODistance, GODistance +
GODistance, GODistance
-
GODistribution, GODistribution +
GODistribution, GODistribution
-
GODistribution:location, The “location” property +
GODistribution:location, The “location” property
-
GODistribution:scale, The “scale” property +
GODistribution:scale, The “scale” property
-
GODistributionType, enum GODistributionType +
GODistributionType, enum GODistributionType
-
GODoc, GODoc +
GODoc, GODoc
-
GODoc::metadata-changed, The “metadata-changed” signal +
GODoc::metadata-changed, The “metadata-changed” signal
-
GODoc::metadata-update, The “metadata-update” signal +
GODoc::metadata-update, The “metadata-update” signal
-
GODoc:dirty, The “dirty” property +
GODoc:dirty, The “dirty” property
-
GODoc:dirty-time, The “dirty-time” property +
GODoc:dirty-time, The “dirty-time” property
-
GODoc:modtime, The “modtime” property +
GODoc:modtime, The “modtime” property
-
GODoc:pristine, The “pristine” property +
GODoc:pristine, The “pristine” property
-
GODoc:saved-state, The “saved-state” property +
GODoc:saved-state, The “saved-state” property
-
GODoc:state, The “state” property +
GODoc:state, The “state” property
-
GODoc:uri, The “uri” property +
GODoc:uri, The “uri” property
-
GODocControl, GODocControl +
GODocControl, GODocControl
-
GODocControlState, enum GODocControlState +
GODocControlState, enum GODocControlState
-
GODotDot, enum GODotDot +
GODotDot, enum GODotDot
-
GODrawingAnchor, GODrawingAnchor +
GODrawingAnchor, GODrawingAnchor
-
GODrawingAnchorDir, enum GODrawingAnchorDir +
GODrawingAnchorDir, enum GODrawingAnchorDir
-
GOEditor, GOEditor +
GOEditor, GOEditor
-
GOEmf, GOEmf +
GOEmf, GOEmf
-
GOErrorInfo, GOErrorInfo +
GOErrorInfo, GOErrorInfo
-
GOFileFormatLevel, enum GOFileFormatLevel +
GOFileFormatLevel, enum GOFileFormatLevel
-
GOFileOpener, GOFileOpener +
GOFileOpener, GOFileOpener
-
GOFileOpener:description, The “description” property +
GOFileOpener:description, The “description” property
-
GOFileOpener:id, The “id” property +
GOFileOpener:id, The “id” property
-
GOFileOpener:interactive-only, The “interactive-only” property +
GOFileOpener:interactive-only, The “interactive-only” property
-
GOFileOpenerClass, GOFileOpenerClass +
GOFileOpenerClass, GOFileOpenerClass
-
GOFileOpenerOpenFunc, GOFileOpenerOpenFunc () +
GOFileOpenerOpenFunc, GOFileOpenerOpenFunc ()
-
GOFileOpenerOpenFuncWithEnc, GOFileOpenerOpenFuncWithEnc () +
GOFileOpenerOpenFuncWithEnc, GOFileOpenerOpenFuncWithEnc ()
-
GOFileOpenerProbeFunc, GOFileOpenerProbeFunc () +
GOFileOpenerProbeFunc, GOFileOpenerProbeFunc ()
-
GOFilePermissions, struct GOFilePermissions +
GOFilePermissions, struct GOFilePermissions
-
GOFileProbeLevel, enum GOFileProbeLevel +
GOFileProbeLevel, enum GOFileProbeLevel
-
GOFileSaver, GOFileSaver +
GOFileSaver, GOFileSaver
-
GOFileSaver::set-export-options, The “set-export-options” signal +
GOFileSaver::set-export-options, The “set-export-options” signal
-
GOFileSaver:description, The “description” property +
GOFileSaver:description, The “description” property
-
GOFileSaver:extension, The “extension” property +
GOFileSaver:extension, The “extension” property
-
GOFileSaver:format-level, The “format-level” property +
GOFileSaver:format-level, The “format-level” property
-
GOFileSaver:id, The “id” property +
GOFileSaver:id, The “id” property
-
GOFileSaver:interactive-only, The “interactive-only” property +
GOFileSaver:interactive-only, The “interactive-only” property
-
GOFileSaver:mime-type, The “mime-type” property +
GOFileSaver:mime-type, The “mime-type” property
-
GOFileSaver:overwrite, The “overwrite” property +
GOFileSaver:overwrite, The “overwrite” property
-
GOFileSaver:scope, The “scope” property +
GOFileSaver:scope, The “scope” property
-
GOFileSaver:sheet-selection, The “sheet-selection” property +
GOFileSaver:sheet-selection, The “sheet-selection” property
-
GOFileSaverClass, GOFileSaverClass +
GOFileSaverClass, GOFileSaverClass
-
GOFileSaverSaveFunc, GOFileSaverSaveFunc () +
GOFileSaverSaveFunc, GOFileSaverSaveFunc ()
-
GOFileSaveScope, enum GOFileSaveScope +
GOFileSaveScope, enum GOFileSaveScope
-
GOFontScript, enum GOFontScript +
GOFontScript, enum GOFontScript
-
GOFontSel, GOFontSel +
GOFontSel, GOFontSel
-
GOFontSel::font-changed, The “font-changed” signal +
GOFontSel::font-changed, The “font-changed” signal
-
GOFontSel:color-default, The “color-default” property +
GOFontSel:color-default, The “color-default” property
-
GOFontSel:color-group, The “color-group” property +
GOFontSel:color-group, The “color-group” property
-
GOFontSel:color-unset-text, The “color-unset-text” property +
GOFontSel:color-unset-text, The “color-unset-text” property
-
GOFontSel:show-color, The “show-color” property +
GOFontSel:show-color, The “show-color” property
-
GOFontSel:show-script, The “show-script” property +
GOFontSel:show-script, The “show-script” property
-
GOFontSel:show-strikethrough, The “show-strikethrough” property +
GOFontSel:show-strikethrough, The “show-strikethrough” property
-
GOFontSel:show-style, The “show-style” property +
GOFontSel:show-style, The “show-style” property
-
GOFontSel:show-underline, The “show-underline” property +
GOFontSel:show-underline, The “show-underline” property
-
GOFontSel:underline-picker, The “underline-picker” property +
GOFontSel:underline-picker, The “underline-picker” property
-
GOFormat, GOFormat +
GOFormat, GOFormat
-
GOFormatCurrency, GOFormatCurrency +
GOFormatCurrency, GOFormatCurrency
-
GOFormatDetails, GOFormatDetails +
GOFormatDetails, GOFormatDetails
-
GOFormatFamily, enum GOFormatFamily +
GOFormatFamily, enum GOFormatFamily
-
GOFormatMagic, enum GOFormatMagic +
GOFormatMagic, enum GOFormatMagic
-
GOFormatMeasure, GOFormatMeasure () +
GOFormatMeasure, GOFormatMeasure ()
-
GOFormatNumberError, enum GOFormatNumberError +
GOFormatNumberError, enum GOFormatNumberError
-
GOFormatSel, GOFormatSel +
GOFormatSel, GOFormatSel
-
GOFormatSel::format-changed, The “format-changed” signal +
GOFormatSel::format-changed, The “format-changed” signal
-
GOFormatSel::generate-preview, The “generate-preview” signal +
GOFormatSel::generate-preview, The “generate-preview” signal
-
Gog3DBox, Gog3DBox +
Gog3DBox, Gog3DBox
-
Gog3DBox:fov, The “fov” property +
Gog3DBox:fov, The “fov” property
-
Gog3DBox:phi, The “phi” property +
Gog3DBox:phi, The “phi” property
-
Gog3DBox:psi, The “psi” property +
Gog3DBox:psi, The “psi” property
-
Gog3DBox:theta, The “theta” property +
Gog3DBox:theta, The “theta” property
-
Gog3DBoxView, Gog3DBoxView +
Gog3DBoxView, Gog3DBoxView
-
GogAxisBase, GogAxisBase +
GogAxisBase, GogAxisBase
-
GogAxisBase:cross-axis-id, The “cross-axis-id” property +
GogAxisBase:cross-axis-id, The “cross-axis-id” property
-
GogAxisBase:major-tick-in, The “major-tick-in” property +
GogAxisBase:major-tick-in, The “major-tick-in” property
-
GogAxisBase:major-tick-labeled, The “major-tick-labeled” property +
GogAxisBase:major-tick-labeled, The “major-tick-labeled” property
-
GogAxisBase:major-tick-out, The “major-tick-out” property +
GogAxisBase:major-tick-out, The “major-tick-out” property
-
GogAxisBase:major-tick-size-pts, The “major-tick-size-pts” property +
GogAxisBase:major-tick-size-pts, The “major-tick-size-pts” property
-
GogAxisBase:minor-tick-in, The “minor-tick-in” property +
GogAxisBase:minor-tick-in, The “minor-tick-in” property
-
GogAxisBase:minor-tick-out, The “minor-tick-out” property +
GogAxisBase:minor-tick-out, The “minor-tick-out” property
-
GogAxisBase:minor-tick-size-pts, The “minor-tick-size-pts” property +
GogAxisBase:minor-tick-size-pts, The “minor-tick-size-pts” property
-
GogAxisBase:padding-pts, The “padding-pts” property +
GogAxisBase:padding-pts, The “padding-pts” property
-
GogAxisBase:pos, The “pos” property +
GogAxisBase:pos, The “pos” property
-
GogAxisBase:pos-str, The “pos-str” property +
GogAxisBase:pos-str, The “pos-str” property
-
GogAxisColorMap, GogAxisColorMap +
GogAxisColorMap, GogAxisColorMap
-
GogAxisColorMap:resource-type, The “resource-type” property +
GogAxisColorMap:resource-type, The “resource-type” property
-
GogAxisColorMapHandler, GogAxisColorMapHandler () +
GogAxisColorMapHandler, GogAxisColorMapHandler ()
-
GogAxisElemType, enum GogAxisElemType +
GogAxisElemType, enum GogAxisElemType
-
GogAxisLine, GogAxisLine +
GogAxisLine, GogAxisLine
-
GogAxisLine:assigned-format-string-XL, The “assigned-format-string-XL” property +
GogAxisLine:assigned-format-string-XL, The “assigned-format-string-XL” property
-
GogAxisMap, GogAxisMap +
GogAxisMap, GogAxisMap
-
GogAxisMetrics, enum GogAxisMetrics +
GogAxisMetrics, enum GogAxisMetrics
-
GogAxisPolarUnit, enum GogAxisPolarUnit +
GogAxisPolarUnit, enum GogAxisPolarUnit
-
GogAxisPosition, enum GogAxisPosition +
GogAxisPosition, enum GogAxisPosition
-
GogAxisSet, enum GogAxisSet +
GogAxisSet, enum GogAxisSet
-
GogAxisTick, GogAxisTick +
GogAxisTick, GogAxisTick
-
GogAxisTickTypes, enum GogAxisTickTypes +
GogAxisTickTypes, enum GogAxisTickTypes
-
GogAxisType, enum GogAxisType +
GogAxisType, enum GogAxisType
-
GogChartMap, GogChartMap +
GogChartMap, GogChartMap
-
GogChartMapPolarData, GogChartMapPolarData +
GogChartMapPolarData, GogChartMapPolarData
-
GogColorScale, GogColorScale +
GogColorScale, GogColorScale
-
GogColorScale:axis, The “axis” property +
GogColorScale:axis, The “axis” property
-
GogColorScale:horizontal, The “horizontal” property +
GogColorScale:horizontal, The “horizontal” property
-
GogColorScale:tick-size-pts, The “tick-size-pts” property +
GogColorScale:tick-size-pts, The “tick-size-pts” property
-
GogColorScale:width, The “width” property +
GogColorScale:width, The “width” property
-
GogDataAllocator, GogDataAllocator +
GogDataAllocator, GogDataAllocator
-
GogDataAllocatorClass, GogDataAllocatorClass +
GogDataAllocatorClass, GogDataAllocatorClass
-
GogDataDuplicator, GogDataDuplicator () +
GogDataDuplicator, GogDataDuplicator ()
-
GogDataEditorClass, GogDataEditorClass +
GogDataEditorClass, GogDataEditorClass
-
GogDataLabel, GogDataLabel +
GogDataLabel, GogDataLabel
-
GogDataLabel:format, The “format” property +
GogDataLabel:format, The “format” property
-
GogDataLabel:index, The “index” property +
GogDataLabel:index, The “index” property
-
GogDataLabel:offset, The “offset” property +
GogDataLabel:offset, The “offset” property
-
GogDataLabel:position, The “position” property +
GogDataLabel:position, The “position” property
-
GogDatasetClass, GogDatasetClass +
GogDatasetClass, GogDatasetClass
-
GogDatasetElement, GogDatasetElement +
GogDatasetElement, GogDatasetElement
-
GogDataType, enum GogDataType +
GogDataType, enum GogDataType
-
GogDimType, enum GogDimType +
GogDimType, enum GogDimType
GogEnumFunc, GogEnumFunc ()
-
GOGeometryAABR, GOGeometryAABR +
GOGeometryAABR, GOGeometryAABR
-
GOGeometryOBR, GOGeometryOBR +
GOGeometryOBR, GOGeometryOBR
-
GOGeometryRotationType, enum GOGeometryRotationType +
GOGeometryRotationType, enum GOGeometryRotationType
-
GOGeometrySide, enum GOGeometrySide +
GOGeometrySide, enum GOGeometrySide
-
GogErrorBar, GogErrorBar +
GogErrorBar, GogErrorBar
-
GogErrorBarDirection, enum GogErrorBarDirection +
GogErrorBarDirection, enum GogErrorBarDirection
-
GogErrorBarDisplay, enum GogErrorBarDisplay +
GogErrorBarDisplay, enum GogErrorBarDisplay
-
GogErrorBarType, enum GogErrorBarType +
GogErrorBarType, enum GogErrorBarType
GogGraph, GogGraph
@@ -980,355 +980,355 @@
GogGraphView:renderer, The “renderer” property
-
GogGridType, enum GogGridType +
GogGridType, enum GogGridType
-
GogManualSizeMode, enum GogManualSizeMode +
GogManualSizeMode, enum GogManualSizeMode
-
GogMSDimType, enum GogMSDimType +
GogMSDimType, enum GogMSDimType
-
GogObject, GogObject +
GogObject, GogObject
-
GogObject::changed, The “changed” signal +
GogObject::changed, The “changed” signal
-
GogObject::child-added, The “child-added” signal +
GogObject::child-added, The “child-added” signal
-
GogObject::child-name-changed, The “child-name-changed” signal +
GogObject::child-name-changed, The “child-name-changed” signal
-
GogObject::child-removed, The “child-removed” signal +
GogObject::child-removed, The “child-removed” signal
-
GogObject::children-reordered, The “children-reordered” signal +
GogObject::children-reordered, The “children-reordered” signal
-
GogObject::name-changed, The “name-changed” signal +
GogObject::name-changed, The “name-changed” signal
-
GogObject::update-editor, The “update-editor” signal +
GogObject::update-editor, The “update-editor” signal
-
GogObject:alignment, The “alignment” property +
GogObject:alignment, The “alignment” property
-
GogObject:anchor, The “anchor” property +
GogObject:anchor, The “anchor” property
-
GogObject:compass, The “compass” property +
GogObject:compass, The “compass” property
-
GogObject:id, The “id” property +
GogObject:id, The “id” property
-
GogObject:invisible, The “invisible” property +
GogObject:invisible, The “invisible” property
-
GogObject:is-position-manual, The “is-position-manual” property +
GogObject:is-position-manual, The “is-position-manual” property
-
GogObject:manual-size, The “manual-size” property +
GogObject:manual-size, The “manual-size” property
-
GogObject:position, The “position” property +
GogObject:position, The “position” property
-
GogObjectClass, GogObjectClass +
GogObjectClass, GogObjectClass
-
GogObjectNamingConv, enum GogObjectNamingConv +
GogObjectNamingConv, enum GogObjectNamingConv
-
GogObjectPosition, enum GogObjectPosition +
GogObjectPosition, enum GogObjectPosition
-
GogObjectRole, GogObjectRole +
GogObjectRole, GogObjectRole
-
GogOutlinedObject, GogOutlinedObject +
GogOutlinedObject, GogOutlinedObject
-
GogOutlinedObject:padding-pts, The “padding-pts” property +
GogOutlinedObject:padding-pts, The “padding-pts” property
-
GogOutlinedObjectClass, GogOutlinedObjectClass +
GogOutlinedObjectClass, GogOutlinedObjectClass
-
GogOutlinedView, GogOutlinedView +
GogOutlinedView, GogOutlinedView
-
GogOutlinedViewClass, GogOutlinedViewClass +
GogOutlinedViewClass, GogOutlinedViewClass
-
GogPlot, GogPlot +
GogPlot, GogPlot
-
GogPlot:bubble-axis, The “bubble-axis” property +
GogPlot:bubble-axis, The “bubble-axis” property
-
GogPlot:circ-axis, The “circ-axis” property +
GogPlot:circ-axis, The “circ-axis” property
-
GogPlot:color-axis, The “color-axis” property +
GogPlot:color-axis, The “color-axis” property
-
GogPlot:guru-hints, The “guru-hints” property +
GogPlot:guru-hints, The “guru-hints” property
-
GogPlot:interpolation, The “interpolation” property +
GogPlot:interpolation, The “interpolation” property
-
GogPlot:plot-group, The “plot-group” property +
GogPlot:plot-group, The “plot-group” property
-
GogPlot:pseudo-3d-axis, The “pseudo-3d-axis” property +
GogPlot:pseudo-3d-axis, The “pseudo-3d-axis” property
-
GogPlot:radial-axis, The “radial-axis” property +
GogPlot:radial-axis, The “radial-axis” property
-
GogPlot:vary-style-by-element, The “vary-style-by-element” property +
GogPlot:vary-style-by-element, The “vary-style-by-element” property
-
GogPlot:x-axis, The “x-axis” property +
GogPlot:x-axis, The “x-axis” property
-
GogPlot:y-axis, The “y-axis” property +
GogPlot:y-axis, The “y-axis” property
-
GogPlot:z-axis, The “z-axis” property +
GogPlot:z-axis, The “z-axis” property
-
GogPlotBoundInfo, GogPlotBoundInfo +
GogPlotBoundInfo, GogPlotBoundInfo
-
GogPlotClass, GogPlotClass +
GogPlotClass, GogPlotClass
-
GogPlotDesc, GogPlotDesc +
GogPlotDesc, GogPlotDesc
-
GogPlotFamily, GogPlotFamily +
GogPlotFamily, GogPlotFamily
-
GogPlotType, GogPlotType +
GogPlotType, GogPlotType
-
GogPlotView, GogPlotView +
GogPlotView, GogPlotView
-
GogPlotViewClass, GogPlotViewClass +
GogPlotViewClass, GogPlotViewClass
-
GOGradientDirection, enum GOGradientDirection +
GOGradientDirection, enum GOGradientDirection
-
GOGraphWidget, GOGraphWidget +
GOGraphWidget, GOGraphWidget
-
GOGraphWidget:aspect-ratio, The “aspect-ratio” property +
GOGraphWidget:aspect-ratio, The “aspect-ratio” property
-
GOGraphWidget:graph, The “graph” property +
GOGraphWidget:graph, The “graph” property
-
GOGraphWidget:hres, The “hres” property +
GOGraphWidget:hres, The “hres” property
-
GOGraphWidget:vres, The “vres” property +
GOGraphWidget:vres, The “vres” property
-
GOGraphWidgetClass, GOGraphWidgetClass +
GOGraphWidgetClass, GOGraphWidgetClass
-
GOGraphWidgetSizeMode, enum GOGraphWidgetSizeMode +
GOGraphWidgetSizeMode, enum GOGraphWidgetSizeMode
-
GogRegCurve, GogRegCurve +
GogRegCurve, GogRegCurve
-
GogRegCurve:drawing-bounds, The “drawing-bounds” property +
GogRegCurve:drawing-bounds, The “drawing-bounds” property
-
GogRegCurve:skip-invalid, The “skip-invalid” property +
GogRegCurve:skip-invalid, The “skip-invalid” property
-
GogRegCurveClass, GogRegCurveClass +
GogRegCurveClass, GogRegCurveClass
-
GogRegCurveDrawingBounds, enum GogRegCurveDrawingBounds +
GogRegCurveDrawingBounds, enum GogRegCurveDrawingBounds
-
GogSeries, GogSeries +
GogSeries, GogSeries
-
GogSeries:fill-type, The “fill-type” property +
GogSeries:fill-type, The “fill-type” property
-
GogSeries:has-legend, The “has-legend” property +
GogSeries:has-legend, The “has-legend” property
-
GogSeries:interpolation, The “interpolation” property +
GogSeries:interpolation, The “interpolation” property
-
GogSeries:interpolation-skip-invalid, The “interpolation-skip-invalid” property +
GogSeries:interpolation-skip-invalid, The “interpolation-skip-invalid” property
-
GogSeriesClass, GogSeriesClass +
GogSeriesClass, GogSeriesClass
-
GogSeriesDesc, GogSeriesDesc +
GogSeriesDesc, GogSeriesDesc
-
GogSeriesDimDesc, GogSeriesDimDesc +
GogSeriesDimDesc, GogSeriesDimDesc
-
GogSeriesElement, GogSeriesElement +
GogSeriesElement, GogSeriesElement
-
GogSeriesElement:index, The “index” property +
GogSeriesElement:index, The “index” property
-
GogSeriesElementClass, GogSeriesElementClass +
GogSeriesElementClass, GogSeriesElementClass
-
GogSeriesFillType, enum GogSeriesFillType +
GogSeriesFillType, enum GogSeriesFillType
-
GogSeriesLabelElt, GogSeriesLabelElt +
GogSeriesLabelElt, GogSeriesLabelElt
-
GogSeriesLabels, GogSeriesLabels +
GogSeriesLabels, GogSeriesLabels
-
GogSeriesLabels:format, The “format” property +
GogSeriesLabels:format, The “format” property
-
GogSeriesLabels:offset, The “offset” property +
GogSeriesLabels:offset, The “offset” property
-
GogSeriesLabels:position, The “position” property +
GogSeriesLabels:position, The “position” property
-
GogSeriesLabelsPos, enum GogSeriesLabelsPos +
GogSeriesLabelsPos, enum GogSeriesLabelsPos
-
GogSeriesPriority, enum GogSeriesPriority +
GogSeriesPriority, enum GogSeriesPriority
-
GogSmoothedCurve, GogSmoothedCurve +
GogSmoothedCurve, GogSmoothedCurve
-
GogSmoothedCurveClass, GogSmoothedCurveClass +
GogSmoothedCurveClass, GogSmoothedCurveClass
-
GogStyle, GogStyle +
GogStyle, GogStyle
-
GogStyledObject, GogStyledObject +
GogStyledObject, GogStyledObject
-
GogStyledObject::style-changed, The “style-changed” signal +
GogStyledObject::style-changed, The “style-changed” signal
-
GogStyledObject:style, The “style” property +
GogStyledObject:style, The “style” property
-
GogStyledObjectClass, GogStyledObjectClass +
GogStyledObjectClass, GogStyledObjectClass
-
GogText, GogText +
GogText, GogText
-
GogText:allow-markup, The “allow-markup” property +
GogText:allow-markup, The “allow-markup” property
-
GogText:allow-wrap, The “allow-wrap” property +
GogText:allow-wrap, The “allow-wrap” property
-
GogText:rotate-bg, The “rotate-bg” property +
GogText:rotate-bg, The “rotate-bg” property
-
GogText:rotate-frame, The “rotate-frame” property +
GogText:rotate-frame, The “rotate-frame” property
-
GogTextClass, GogTextClass +
GogTextClass, GogTextClass
-
GogTheme, GogTheme +
GogTheme, GogTheme
-
GogTheme:resource-type, The “resource-type” property +
GogTheme:resource-type, The “resource-type” property
-
GogTool, GogTool +
GogTool, GogTool
-
GogToolAction, struct GogToolAction +
GogToolAction, struct GogToolAction
-
GogTrendLine, GogTrendLine +
GogTrendLine, GogTrendLine
-
GogTrendLine:has-legend, The “has-legend” property +
GogTrendLine:has-legend, The “has-legend” property
-
GogTrendLineClass, GogTrendLineClass +
GogTrendLineClass, GogTrendLineClass
-
GogTrendLineType, GogTrendLineType +
GogTrendLineType, GogTrendLineType
-
GogView, GogView +
GogView, GogView
-
GogView:model, The “model” property +
GogView:model, The “model” property
-
GogView:parent, The “parent” property +
GogView:parent, The “parent” property
-
GogViewAllocation, GogViewAllocation +
GogViewAllocation, GogViewAllocation
-
GogViewClass, GogViewClass +
GogViewClass, GogViewClass
-
GogViewPadding, GogViewPadding +
GogViewPadding, GogViewPadding
-
GogViewRequisition, GogViewRequisition +
GogViewRequisition, GogViewRequisition
-
GOG_3D_BOX_TYPE, GOG_3D_BOX_TYPE +
GOG_3D_BOX_TYPE, GOG_3D_BOX_TYPE
-
gog_axis_add_contributor, gog_axis_add_contributor () +
gog_axis_add_contributor, gog_axis_add_contributor ()
-
gog_axis_base_get_crossed_axis, gog_axis_base_get_crossed_axis () +
gog_axis_base_get_crossed_axis, gog_axis_base_get_crossed_axis ()
-
gog_axis_base_get_crossed_axis_for_plot, gog_axis_base_get_crossed_axis_for_plot () +
gog_axis_base_get_crossed_axis_for_plot, gog_axis_base_get_crossed_axis_for_plot ()
-
gog_axis_base_get_crossed_axis_type, gog_axis_base_get_crossed_axis_type () +
gog_axis_base_get_crossed_axis_type, gog_axis_base_get_crossed_axis_type ()
-
gog_axis_base_get_cross_location, gog_axis_base_get_cross_location () +
gog_axis_base_get_cross_location, gog_axis_base_get_cross_location ()
-
gog_axis_bound_changed, gog_axis_bound_changed () +
gog_axis_bound_changed, gog_axis_bound_changed ()
-
gog_axis_clear_contributors, gog_axis_clear_contributors () +
gog_axis_clear_contributors, gog_axis_clear_contributors ()
-
gog_axis_color_map_delete, gog_axis_color_map_delete () +
gog_axis_color_map_delete, gog_axis_color_map_delete ()
-
gog_axis_color_map_dup, gog_axis_color_map_dup () +
gog_axis_color_map_dup, gog_axis_color_map_dup ()
-
gog_axis_color_map_edit, gog_axis_color_map_edit () +
gog_axis_color_map_edit, gog_axis_color_map_edit ()
-
gog_axis_color_map_foreach, gog_axis_color_map_foreach () +
gog_axis_color_map_foreach, gog_axis_color_map_foreach ()
-
gog_axis_color_map_from_colors, gog_axis_color_map_from_colors () +
gog_axis_color_map_from_colors, gog_axis_color_map_from_colors ()
-
gog_axis_color_map_get_color, gog_axis_color_map_get_color () +
gog_axis_color_map_get_color, gog_axis_color_map_get_color ()
-
gog_axis_color_map_get_from_id, gog_axis_color_map_get_from_id () +
gog_axis_color_map_get_from_id, gog_axis_color_map_get_from_id ()
-
gog_axis_color_map_get_id, gog_axis_color_map_get_id () +
gog_axis_color_map_get_id, gog_axis_color_map_get_id ()
-
gog_axis_color_map_get_max, gog_axis_color_map_get_max () +
gog_axis_color_map_get_max, gog_axis_color_map_get_max ()
-
gog_axis_color_map_get_name, gog_axis_color_map_get_name () +
gog_axis_color_map_get_name, gog_axis_color_map_get_name ()
-
gog_axis_color_map_get_resource_type, gog_axis_color_map_get_resource_type () +
gog_axis_color_map_get_resource_type, gog_axis_color_map_get_resource_type ()
-
gog_axis_color_map_get_snapshot, gog_axis_color_map_get_snapshot () +
gog_axis_color_map_get_snapshot, gog_axis_color_map_get_snapshot ()
-
gog_axis_color_map_to_cairo, gog_axis_color_map_to_cairo () +
gog_axis_color_map_to_cairo, gog_axis_color_map_to_cairo ()
-
gog_axis_contributors, gog_axis_contributors () +
gog_axis_contributors, gog_axis_contributors ()
-
gog_axis_data_get_bounds, gog_axis_data_get_bounds () +
gog_axis_data_get_bounds, gog_axis_data_get_bounds ()
-
gog_axis_del_contributor, gog_axis_del_contributor () +
gog_axis_del_contributor, gog_axis_del_contributor ()
-
gog_axis_get_atype, gog_axis_get_atype () +
gog_axis_get_atype, gog_axis_get_atype ()
-
gog_axis_get_bounds, gog_axis_get_bounds () +
gog_axis_get_bounds, gog_axis_get_bounds ()
-
gog_axis_get_circular_rotation, gog_axis_get_circular_rotation () +
gog_axis_get_circular_rotation, gog_axis_get_circular_rotation ()
-
gog_axis_get_color_map, gog_axis_get_color_map () +
gog_axis_get_color_map, gog_axis_get_color_map ()
-
gog_axis_get_color_scale, gog_axis_get_color_scale () +
gog_axis_get_color_scale, gog_axis_get_color_scale ()
-
gog_axis_get_date_conv, gog_axis_get_date_conv () +
gog_axis_get_date_conv, gog_axis_get_date_conv ()
-
gog_axis_get_effective_format, gog_axis_get_effective_format () +
gog_axis_get_effective_format, gog_axis_get_effective_format ()
-
gog_axis_get_effective_span, gog_axis_get_effective_span () +
gog_axis_get_effective_span, gog_axis_get_effective_span ()
-
gog_axis_get_entry, gog_axis_get_entry () +
gog_axis_get_entry, gog_axis_get_entry ()
-
gog_axis_get_format, gog_axis_get_format () +
gog_axis_get_format, gog_axis_get_format ()
-
gog_axis_get_grid_line, gog_axis_get_grid_line () +
gog_axis_get_grid_line, gog_axis_get_grid_line ()
-
gog_axis_get_labels, gog_axis_get_labels () +
gog_axis_get_labels, gog_axis_get_labels ()
-
gog_axis_get_major_ticks_distance, gog_axis_get_major_ticks_distance () +
gog_axis_get_major_ticks_distance, gog_axis_get_major_ticks_distance ()
-
gog_axis_get_metrics, gog_axis_get_metrics () +
gog_axis_get_metrics, gog_axis_get_metrics ()
-
gog_axis_get_polar_perimeter, gog_axis_get_polar_perimeter () +
gog_axis_get_polar_perimeter, gog_axis_get_polar_perimeter ()
-
gog_axis_get_polar_unit, gog_axis_get_polar_unit () +
gog_axis_get_polar_unit, gog_axis_get_polar_unit ()
-
gog_axis_get_ref_axis, gog_axis_get_ref_axis () +
gog_axis_get_ref_axis, gog_axis_get_ref_axis ()
-
gog_axis_get_ticks, gog_axis_get_ticks () +
gog_axis_get_ticks, gog_axis_get_ticks ()
-
gog_axis_is_center_on_ticks, gog_axis_is_center_on_ticks () +
gog_axis_is_center_on_ticks, gog_axis_is_center_on_ticks ()
-
gog_axis_is_discrete, gog_axis_is_discrete () +
gog_axis_is_discrete, gog_axis_is_discrete ()
-
gog_axis_is_inverted, gog_axis_is_inverted () +
gog_axis_is_inverted, gog_axis_is_inverted ()
-
gog_axis_is_zero_important, gog_axis_is_zero_important () +
gog_axis_is_zero_important, gog_axis_is_zero_important ()
-
gog_axis_line_get_ticks, gog_axis_line_get_ticks () +
gog_axis_line_get_ticks, gog_axis_line_get_ticks ()
-
gog_axis_map, gog_axis_map () +
gog_axis_map, gog_axis_map ()
-
gog_axis_map_derivative_to_view, gog_axis_map_derivative_to_view () +
gog_axis_map_derivative_to_view, gog_axis_map_derivative_to_view ()
-
gog_axis_map_finite, gog_axis_map_finite () +
gog_axis_map_finite, gog_axis_map_finite ()
-
gog_axis_map_free, gog_axis_map_free () +
gog_axis_map_free, gog_axis_map_free ()
-
gog_axis_map_from_view, gog_axis_map_from_view () +
gog_axis_map_from_view, gog_axis_map_from_view ()
-
gog_axis_map_get_baseline, gog_axis_map_get_baseline () +
gog_axis_map_get_baseline, gog_axis_map_get_baseline ()
-
gog_axis_map_get_bounds, gog_axis_map_get_bounds () +
gog_axis_map_get_bounds, gog_axis_map_get_bounds ()
-
gog_axis_map_get_extents, gog_axis_map_get_extents () +
gog_axis_map_get_extents, gog_axis_map_get_extents ()
-
gog_axis_map_get_real_bounds, gog_axis_map_get_real_bounds () +
gog_axis_map_get_real_bounds, gog_axis_map_get_real_bounds ()
-
gog_axis_map_get_real_extents, gog_axis_map_get_real_extents () +
gog_axis_map_get_real_extents, gog_axis_map_get_real_extents ()
-
gog_axis_map_is_discrete, gog_axis_map_is_discrete () +
gog_axis_map_is_discrete, gog_axis_map_is_discrete ()
-
gog_axis_map_is_inverted, gog_axis_map_is_inverted () +
gog_axis_map_is_inverted, gog_axis_map_is_inverted ()
-
gog_axis_map_is_valid, gog_axis_map_is_valid () +
gog_axis_map_is_valid, gog_axis_map_is_valid ()
-
gog_axis_map_new, gog_axis_map_new () +
gog_axis_map_new, gog_axis_map_new ()
-
gog_axis_map_to_view, gog_axis_map_to_view () +
gog_axis_map_to_view, gog_axis_map_to_view ()
-
gog_axis_set_bounds, gog_axis_set_bounds () +
gog_axis_set_bounds, gog_axis_set_bounds ()
-
gog_axis_set_extents, gog_axis_set_extents () +
gog_axis_set_extents, gog_axis_set_extents ()
-
gog_axis_set_format, gog_axis_set_format () +
gog_axis_set_format, gog_axis_set_format ()
-
gog_axis_set_from_str, gog_axis_set_from_str () +
gog_axis_set_from_str, gog_axis_set_from_str ()
-
gog_axis_set_polar_unit, gog_axis_set_polar_unit () +
gog_axis_set_polar_unit, gog_axis_set_polar_unit ()
gog_chart_axis_set_assign, gog_chart_axis_set_assign ()
@@ -1350,85 +1350,85 @@
gog_chart_get_position, gog_chart_get_position ()
-
gog_chart_is_3d, gog_chart_is_3d () +
gog_chart_is_3d, gog_chart_is_3d ()
-
gog_chart_map_2D_derivative_to_view, gog_chart_map_2D_derivative_to_view () +
gog_chart_map_2D_derivative_to_view, gog_chart_map_2D_derivative_to_view ()
-
gog_chart_map_2D_to_view, gog_chart_map_2D_to_view () +
gog_chart_map_2D_to_view, gog_chart_map_2D_to_view ()
-
gog_chart_map_free, gog_chart_map_free () +
gog_chart_map_free, gog_chart_map_free ()
-
gog_chart_map_get_axis_map, gog_chart_map_get_axis_map () +
gog_chart_map_get_axis_map, gog_chart_map_get_axis_map ()
-
gog_chart_map_get_polar_parms, gog_chart_map_get_polar_parms () +
gog_chart_map_get_polar_parms, gog_chart_map_get_polar_parms ()
-
gog_chart_map_is_valid, gog_chart_map_is_valid () +
gog_chart_map_is_valid, gog_chart_map_is_valid ()
-
gog_chart_map_make_close_path, gog_chart_map_make_close_path () +
gog_chart_map_make_close_path, gog_chart_map_make_close_path ()
-
gog_chart_map_make_path, gog_chart_map_make_path () +
gog_chart_map_make_path, gog_chart_map_make_path ()
-
gog_chart_map_new, gog_chart_map_new () +
gog_chart_map_new, gog_chart_map_new ()
-
gog_chart_map_view_to_2D, gog_chart_map_view_to_2D () +
gog_chart_map_view_to_2D, gog_chart_map_view_to_2D ()
-
gog_chart_request_cardinality_update, gog_chart_request_cardinality_update () +
gog_chart_request_cardinality_update, gog_chart_request_cardinality_update ()
-
gog_chart_set_plot_area, gog_chart_set_plot_area () +
gog_chart_set_plot_area, gog_chart_set_plot_area ()
-
gog_chart_set_position, gog_chart_set_position () +
gog_chart_set_position, gog_chart_set_position ()
-
gog_chart_view_get_plot_area, gog_chart_view_get_plot_area () +
gog_chart_view_get_plot_area, gog_chart_view_get_plot_area ()
-
gog_color_scale_get_axis, gog_color_scale_get_axis () +
gog_color_scale_get_axis, gog_color_scale_get_axis ()
-
gog_color_scale_set_axis, gog_color_scale_set_axis () +
gog_color_scale_set_axis, gog_color_scale_set_axis ()
-
gog_dataset_dims, gog_dataset_dims () +
gog_dataset_dims, gog_dataset_dims ()
-
gog_dataset_dup_to_simple, gog_dataset_dup_to_simple () +
gog_dataset_dup_to_simple, gog_dataset_dup_to_simple ()
-
gog_dataset_finalize, gog_dataset_finalize () +
gog_dataset_finalize, gog_dataset_finalize ()
-
gog_dataset_get_dim, gog_dataset_get_dim () +
gog_dataset_get_dim, gog_dataset_get_dim ()
-
gog_dataset_get_elem, gog_dataset_get_elem () +
gog_dataset_get_elem, gog_dataset_get_elem ()
-
gog_dataset_parent_changed, gog_dataset_parent_changed () +
gog_dataset_parent_changed, gog_dataset_parent_changed ()
-
gog_dataset_set_dim, gog_dataset_set_dim () +
gog_dataset_set_dim, gog_dataset_set_dim ()
-
gog_dataset_set_dim_internal, gog_dataset_set_dim_internal () +
gog_dataset_set_dim_internal, gog_dataset_set_dim_internal ()
-
gog_data_allocator_allocate, gog_data_allocator_allocate () +
gog_data_allocator_allocate, gog_data_allocator_allocate ()
-
gog_data_allocator_editor, gog_data_allocator_editor () +
gog_data_allocator_editor, gog_data_allocator_editor ()
-
gog_data_editor_set_format, gog_data_editor_set_format () +
gog_data_editor_set_format, gog_data_editor_set_format ()
-
gog_data_editor_set_value_double, gog_data_editor_set_value_double () +
gog_data_editor_set_value_double, gog_data_editor_set_value_double ()
-
gog_data_label_get_element, gog_data_label_get_element () +
gog_data_label_get_element, gog_data_label_get_element ()
-
gog_data_label_get_position, gog_data_label_get_position () +
gog_data_label_get_position, gog_data_label_get_position ()
-
gog_data_label_set_allowed_position, gog_data_label_set_allowed_position () +
gog_data_label_set_allowed_position, gog_data_label_set_allowed_position ()
-
gog_data_label_set_default_position, gog_data_label_set_default_position () +
gog_data_label_set_default_position, gog_data_label_set_default_position ()
-
gog_data_label_set_position, gog_data_label_set_position () +
gog_data_label_set_position, gog_data_label_set_position ()
-
gog_error_bar_dup, gog_error_bar_dup () +
gog_error_bar_dup, gog_error_bar_dup ()
-
gog_error_bar_get_bounds, gog_error_bar_get_bounds () +
gog_error_bar_get_bounds, gog_error_bar_get_bounds ()
-
gog_error_bar_get_minmax, gog_error_bar_get_minmax () +
gog_error_bar_get_minmax, gog_error_bar_get_minmax ()
-
gog_error_bar_is_visible, gog_error_bar_is_visible () +
gog_error_bar_is_visible, gog_error_bar_is_visible ()
-
gog_error_bar_prefs, gog_error_bar_prefs () +
gog_error_bar_prefs, gog_error_bar_prefs ()
-
gog_error_bar_render, gog_error_bar_render () +
gog_error_bar_render, gog_error_bar_render ()
gog_graph_dup, gog_graph_dup ()
@@ -1470,2896 +1470,2896 @@
gog_graph_view_set_selection, gog_graph_view_set_selection ()
-
gog_grid_get_gtype, gog_grid_get_gtype () +
gog_grid_get_gtype, gog_grid_get_gtype ()
-
gog_grid_line_is_minor, gog_grid_line_is_minor () +
gog_grid_line_is_minor, gog_grid_line_is_minor ()
-
gog_grid_line_view_render_lines, gog_grid_line_view_render_lines () +
gog_grid_line_view_render_lines, gog_grid_line_view_render_lines ()
-
gog_grid_line_view_render_stripes, gog_grid_line_view_render_stripes () +
gog_grid_line_view_render_stripes, gog_grid_line_view_render_stripes ()
-
gog_grid_set_gtype, gog_grid_set_gtype () +
gog_grid_set_gtype, gog_grid_set_gtype ()
-
gog_guru, gog_guru () +
gog_guru, gog_guru ()
-
gog_guru_add_custom_widget, gog_guru_add_custom_widget () +
gog_guru_add_custom_widget, gog_guru_add_custom_widget ()
-
gog_guru_get_help_button, gog_guru_get_help_button () +
gog_guru_get_help_button, gog_guru_get_help_button ()
-
gog_object_add_by_name, gog_object_add_by_name () +
gog_object_add_by_name, gog_object_add_by_name ()
-
gog_object_add_by_role, gog_object_add_by_role () +
gog_object_add_by_role, gog_object_add_by_role ()
-
gog_object_can_reorder, gog_object_can_reorder () +
gog_object_can_reorder, gog_object_can_reorder ()
-
gog_object_clear_parent, gog_object_clear_parent () +
gog_object_clear_parent, gog_object_clear_parent ()
-
gog_object_document_changed, gog_object_document_changed () +
gog_object_document_changed, gog_object_document_changed ()
-
gog_object_dup, gog_object_dup () +
gog_object_dup, gog_object_dup ()
-
gog_object_emit_changed, gog_object_emit_changed () +
gog_object_emit_changed, gog_object_emit_changed ()
-
gog_object_find_role_by_name, gog_object_find_role_by_name () +
gog_object_find_role_by_name, gog_object_find_role_by_name ()
-
gog_object_get_children, gog_object_get_children () +
gog_object_get_children, gog_object_get_children ()
-
gog_object_get_child_by_name, gog_object_get_child_by_name () +
gog_object_get_child_by_name, gog_object_get_child_by_name ()
-
gog_object_get_child_by_role, gog_object_get_child_by_role () +
gog_object_get_child_by_role, gog_object_get_child_by_role ()
-
gog_object_get_editor, gog_object_get_editor () +
gog_object_get_editor, gog_object_get_editor ()
-
gog_object_get_graph, gog_object_get_graph () +
gog_object_get_graph, gog_object_get_graph ()
-
gog_object_get_id, gog_object_get_id () +
gog_object_get_id, gog_object_get_id ()
-
gog_object_get_manual_allocation, gog_object_get_manual_allocation () +
gog_object_get_manual_allocation, gog_object_get_manual_allocation ()
-
gog_object_get_manual_position, gog_object_get_manual_position () +
gog_object_get_manual_position, gog_object_get_manual_position ()
-
gog_object_get_manual_size_mode, gog_object_get_manual_size_mode () +
gog_object_get_manual_size_mode, gog_object_get_manual_size_mode ()
-
gog_object_get_name, gog_object_get_name () +
gog_object_get_name, gog_object_get_name ()
-
gog_object_get_parent, gog_object_get_parent () +
gog_object_get_parent, gog_object_get_parent ()
-
gog_object_get_parent_typed, gog_object_get_parent_typed () +
gog_object_get_parent_typed, gog_object_get_parent_typed ()
-
gog_object_get_position_flags, gog_object_get_position_flags () +
gog_object_get_position_flags, gog_object_get_position_flags ()
-
gog_object_get_theme, gog_object_get_theme () +
gog_object_get_theme, gog_object_get_theme ()
-
gog_object_is_default_position_flags, gog_object_is_default_position_flags () +
gog_object_is_default_position_flags, gog_object_is_default_position_flags ()
-
gog_object_is_deletable, gog_object_is_deletable () +
gog_object_is_deletable, gog_object_is_deletable ()
-
gog_object_is_visible, gog_object_is_visible() +
gog_object_is_visible, gog_object_is_visible()
-
gog_object_new_view, gog_object_new_view () +
gog_object_new_view, gog_object_new_view ()
-
gog_object_possible_additions, gog_object_possible_additions () +
gog_object_possible_additions, gog_object_possible_additions ()
-
gog_object_register_roles, gog_object_register_roles () +
gog_object_register_roles, gog_object_register_roles ()
-
gog_object_reorder, gog_object_reorder () +
gog_object_reorder, gog_object_reorder ()
-
gog_object_request_editor_update, gog_object_request_editor_update () +
gog_object_request_editor_update, gog_object_request_editor_update ()
-
gog_object_request_update, gog_object_request_update () +
gog_object_request_update, gog_object_request_update ()
-
gog_object_set_invisible, gog_object_set_invisible () +
gog_object_set_invisible, gog_object_set_invisible ()
-
gog_object_set_manual_position, gog_object_set_manual_position () +
gog_object_set_manual_position, gog_object_set_manual_position ()
-
gog_object_set_name, gog_object_set_name () +
gog_object_set_name, gog_object_set_name ()
-
gog_object_set_parent, gog_object_set_parent () +
gog_object_set_parent, gog_object_set_parent ()
-
gog_object_set_position_flags, gog_object_set_position_flags () +
gog_object_set_position_flags, gog_object_set_position_flags ()
-
gog_object_update, gog_object_update () +
gog_object_update, gog_object_update ()
-
gog_outlined_object_get_pad, gog_outlined_object_get_pad () +
gog_outlined_object_get_pad, gog_outlined_object_get_pad ()
-
GOG_PARAM_FORCE_SAVE, GOG_PARAM_FORCE_SAVE +
GOG_PARAM_FORCE_SAVE, GOG_PARAM_FORCE_SAVE
-
GOG_PARAM_POSITION, GOG_PARAM_POSITION +
GOG_PARAM_POSITION, GOG_PARAM_POSITION
-
gog_plot_axis_clear, gog_plot_axis_clear () +
gog_plot_axis_clear, gog_plot_axis_clear ()
-
gog_plot_axis_set_assign, gog_plot_axis_set_assign () +
gog_plot_axis_set_assign, gog_plot_axis_set_assign ()
-
gog_plot_axis_set_is_valid, gog_plot_axis_set_is_valid () +
gog_plot_axis_set_is_valid, gog_plot_axis_set_is_valid ()
-
gog_plot_axis_set_pref, gog_plot_axis_set_pref () +
gog_plot_axis_set_pref, gog_plot_axis_set_pref ()
-
gog_plot_clear_series, gog_plot_clear_series () +
gog_plot_clear_series, gog_plot_clear_series ()
-
gog_plot_description, gog_plot_description () +
gog_plot_description, gog_plot_description ()
-
gog_plot_families, gog_plot_families () +
gog_plot_families, gog_plot_families ()
-
gog_plot_family_by_name, gog_plot_family_by_name () +
gog_plot_family_by_name, gog_plot_family_by_name ()
-
gog_plot_family_register, gog_plot_family_register () +
gog_plot_family_register, gog_plot_family_register ()
-
gog_plot_family_unregister, gog_plot_family_unregister () +
gog_plot_family_unregister, gog_plot_family_unregister ()
-
gog_plot_foreach_elem, gog_plot_foreach_elem () +
gog_plot_foreach_elem, gog_plot_foreach_elem ()
-
gog_plot_get_axis, gog_plot_get_axis () +
gog_plot_get_axis, gog_plot_get_axis ()
-
gog_plot_get_axis_bounds, gog_plot_get_axis_bounds () +
gog_plot_get_axis_bounds, gog_plot_get_axis_bounds ()
-
gog_plot_get_cardinality, gog_plot_get_cardinality () +
gog_plot_get_cardinality, gog_plot_get_cardinality ()
-
GOG_PLOT_GET_CLASS, GOG_PLOT_GET_CLASS() +
GOG_PLOT_GET_CLASS, GOG_PLOT_GET_CLASS()
-
gog_plot_get_percent_value, gog_plot_get_percent_value () +
gog_plot_get_percent_value, gog_plot_get_percent_value ()
-
gog_plot_get_series, gog_plot_get_series () +
gog_plot_get_series, gog_plot_get_series ()
-
gog_plot_guru_helper, gog_plot_guru_helper () +
gog_plot_guru_helper, gog_plot_guru_helper ()
-
gog_plot_new_by_name, gog_plot_new_by_name () +
gog_plot_new_by_name, gog_plot_new_by_name ()
-
gog_plot_new_by_type, gog_plot_new_by_type () +
gog_plot_new_by_type, gog_plot_new_by_type ()
-
gog_plot_new_series, gog_plot_new_series () +
gog_plot_new_series, gog_plot_new_series ()
-
gog_plot_request_cardinality_update, gog_plot_request_cardinality_update () +
gog_plot_request_cardinality_update, gog_plot_request_cardinality_update ()
-
gog_plot_set_axis, gog_plot_set_axis () +
gog_plot_set_axis, gog_plot_set_axis ()
-
gog_plot_supports_vary_style_by_element, gog_plot_supports_vary_style_by_element () +
gog_plot_supports_vary_style_by_element, gog_plot_supports_vary_style_by_element ()
-
gog_plot_type_register, gog_plot_type_register () +
gog_plot_type_register, gog_plot_type_register ()
-
gog_plot_update_3d, gog_plot_update_3d () +
gog_plot_update_3d, gog_plot_update_3d ()
-
gog_plot_update_cardinality, gog_plot_update_cardinality () +
gog_plot_update_cardinality, gog_plot_update_cardinality ()
-
gog_plot_view_get_data_at_point, gog_plot_view_get_data_at_point () +
gog_plot_view_get_data_at_point, gog_plot_view_get_data_at_point ()
-
gog_reg_curve_get_bounds, gog_reg_curve_get_bounds () +
gog_reg_curve_get_bounds, gog_reg_curve_get_bounds ()
-
gog_reg_curve_get_equation, gog_reg_curve_get_equation () +
gog_reg_curve_get_equation, gog_reg_curve_get_equation ()
-
gog_reg_curve_get_R2, gog_reg_curve_get_R2 () +
gog_reg_curve_get_R2, gog_reg_curve_get_R2 ()
-
gog_renderer_draw_circle, gog_renderer_draw_circle () +
gog_renderer_draw_circle, gog_renderer_draw_circle ()
-
gog_renderer_draw_color_map, gog_renderer_draw_color_map () +
gog_renderer_draw_color_map, gog_renderer_draw_color_map ()
-
gog_renderer_draw_data_label, gog_renderer_draw_data_label () +
gog_renderer_draw_data_label, gog_renderer_draw_data_label ()
-
gog_renderer_draw_gostring, gog_renderer_draw_gostring () +
gog_renderer_draw_gostring, gog_renderer_draw_gostring ()
-
gog_renderer_draw_grip, gog_renderer_draw_grip () +
gog_renderer_draw_grip, gog_renderer_draw_grip ()
-
gog_renderer_draw_marker, gog_renderer_draw_marker () +
gog_renderer_draw_marker, gog_renderer_draw_marker ()
-
gog_renderer_draw_rectangle, gog_renderer_draw_rectangle () +
gog_renderer_draw_rectangle, gog_renderer_draw_rectangle ()
-
gog_renderer_draw_rotated_rectangle, gog_renderer_draw_rotated_rectangle () +
gog_renderer_draw_rotated_rectangle, gog_renderer_draw_rotated_rectangle ()
-
gog_renderer_draw_selection_rectangle, gog_renderer_draw_selection_rectangle () +
gog_renderer_draw_selection_rectangle, gog_renderer_draw_selection_rectangle ()
-
gog_renderer_draw_shape, gog_renderer_draw_shape () +
gog_renderer_draw_shape, gog_renderer_draw_shape ()
-
gog_renderer_draw_text, gog_renderer_draw_text () +
gog_renderer_draw_text, gog_renderer_draw_text ()
-
gog_renderer_export_image, gog_renderer_export_image () +
gog_renderer_export_image, gog_renderer_export_image ()
-
gog_renderer_fill_circle, gog_renderer_fill_circle () +
gog_renderer_fill_circle, gog_renderer_fill_circle ()
-
gog_renderer_fill_rectangle, gog_renderer_fill_rectangle () +
gog_renderer_fill_rectangle, gog_renderer_fill_rectangle ()
-
gog_renderer_fill_serie, gog_renderer_fill_serie () +
gog_renderer_fill_serie, gog_renderer_fill_serie ()
-
gog_renderer_fill_shape, gog_renderer_fill_shape () +
gog_renderer_fill_shape, gog_renderer_fill_shape ()
-
gog_renderer_get_cairo_surface, gog_renderer_get_cairo_surface () +
gog_renderer_get_cairo_surface, gog_renderer_get_cairo_surface ()
-
gog_renderer_get_gostring_AABR, gog_renderer_get_gostring_AABR () +
gog_renderer_get_gostring_AABR, gog_renderer_get_gostring_AABR ()
-
gog_renderer_get_gostring_OBR, gog_renderer_get_gostring_OBR () +
gog_renderer_get_gostring_OBR, gog_renderer_get_gostring_OBR ()
-
gog_renderer_get_hairline_width_pts, gog_renderer_get_hairline_width_pts () +
gog_renderer_get_hairline_width_pts, gog_renderer_get_hairline_width_pts ()
-
gog_renderer_get_pixbuf, gog_renderer_get_pixbuf () +
gog_renderer_get_pixbuf, gog_renderer_get_pixbuf ()
-
gog_renderer_get_scale, gog_renderer_get_scale () +
gog_renderer_get_scale, gog_renderer_get_scale ()
-
gog_renderer_get_text_AABR, gog_renderer_get_text_AABR () +
gog_renderer_get_text_AABR, gog_renderer_get_text_AABR ()
-
gog_renderer_get_text_OBR, gog_renderer_get_text_OBR () +
gog_renderer_get_text_OBR, gog_renderer_get_text_OBR ()
-
GOG_RENDERER_GRIP_SIZE, GOG_RENDERER_GRIP_SIZE +
GOG_RENDERER_GRIP_SIZE, GOG_RENDERER_GRIP_SIZE
-
GOG_RENDERER_HAIRLINE_WIDTH_PTS, GOG_RENDERER_HAIRLINE_WIDTH_PTS +
GOG_RENDERER_HAIRLINE_WIDTH_PTS, GOG_RENDERER_HAIRLINE_WIDTH_PTS
-
gog_renderer_in_grip, gog_renderer_in_grip() +
gog_renderer_in_grip, gog_renderer_in_grip()
-
gog_renderer_line_size, gog_renderer_line_size () +
gog_renderer_line_size, gog_renderer_line_size ()
-
gog_renderer_new, gog_renderer_new () +
gog_renderer_new, gog_renderer_new ()
-
gog_renderer_pop_clip, gog_renderer_pop_clip () +
gog_renderer_pop_clip, gog_renderer_pop_clip ()
-
gog_renderer_pop_style, gog_renderer_pop_style () +
gog_renderer_pop_style, gog_renderer_pop_style ()
-
gog_renderer_pt2r, gog_renderer_pt2r () +
gog_renderer_pt2r, gog_renderer_pt2r ()
-
gog_renderer_pt2r_x, gog_renderer_pt2r_x () +
gog_renderer_pt2r_x, gog_renderer_pt2r_x ()
-
gog_renderer_pt2r_y, gog_renderer_pt2r_y () +
gog_renderer_pt2r_y, gog_renderer_pt2r_y ()
-
gog_renderer_push_clip, gog_renderer_push_clip () +
gog_renderer_push_clip, gog_renderer_push_clip ()
-
gog_renderer_push_clip_rectangle, gog_renderer_push_clip_rectangle () +
gog_renderer_push_clip_rectangle, gog_renderer_push_clip_rectangle ()
-
gog_renderer_push_style, gog_renderer_push_style () +
gog_renderer_push_style, gog_renderer_push_style ()
-
gog_renderer_render_to_cairo, gog_renderer_render_to_cairo () +
gog_renderer_render_to_cairo, gog_renderer_render_to_cairo ()
-
gog_renderer_request_update, gog_renderer_request_update () +
gog_renderer_request_update, gog_renderer_request_update ()
-
gog_renderer_stroke_circle, gog_renderer_stroke_circle () +
gog_renderer_stroke_circle, gog_renderer_stroke_circle ()
-
gog_renderer_stroke_rectangle, gog_renderer_stroke_rectangle () +
gog_renderer_stroke_rectangle, gog_renderer_stroke_rectangle ()
-
gog_renderer_stroke_serie, gog_renderer_stroke_serie () +
gog_renderer_stroke_serie, gog_renderer_stroke_serie ()
-
gog_renderer_stroke_shape, gog_renderer_stroke_shape () +
gog_renderer_stroke_shape, gog_renderer_stroke_shape ()
-
gog_renderer_update, gog_renderer_update () +
gog_renderer_update, gog_renderer_update ()
-
gog_series_check_validity, gog_series_check_validity () +
gog_series_check_validity, gog_series_check_validity ()
-
gog_series_get_element, gog_series_get_element () +
gog_series_get_element, gog_series_get_element ()
-
gog_series_get_fill_type, gog_series_get_fill_type () +
gog_series_get_fill_type, gog_series_get_fill_type ()
-
gog_series_get_fill_type_from_combo, gog_series_get_fill_type_from_combo () +
gog_series_get_fill_type_from_combo, gog_series_get_fill_type_from_combo ()
-
gog_series_get_interpolation_params, gog_series_get_interpolation_params () +
gog_series_get_interpolation_params, gog_series_get_interpolation_params ()
-
gog_series_get_name, gog_series_get_name () +
gog_series_get_name, gog_series_get_name ()
-
gog_series_get_overrides, gog_series_get_overrides () +
gog_series_get_overrides, gog_series_get_overrides ()
-
gog_series_get_plot, gog_series_get_plot () +
gog_series_get_plot, gog_series_get_plot ()
-
gog_series_get_xyz_data, gog_series_get_xyz_data () +
gog_series_get_xyz_data, gog_series_get_xyz_data ()
-
gog_series_get_xy_data, gog_series_get_xy_data () +
gog_series_get_xy_data, gog_series_get_xy_data ()
-
gog_series_has_legend, gog_series_has_legend () +
gog_series_has_legend, gog_series_has_legend ()
-
gog_series_is_valid, gog_series_is_valid () +
gog_series_is_valid, gog_series_is_valid ()
-
gog_series_labels_get_position, gog_series_labels_get_position () +
gog_series_labels_get_position, gog_series_labels_get_position ()
-
gog_series_labels_scalar_get_element, gog_series_labels_scalar_get_element () +
gog_series_labels_scalar_get_element, gog_series_labels_scalar_get_element ()
-
gog_series_labels_set_allowed_position, gog_series_labels_set_allowed_position () +
gog_series_labels_set_allowed_position, gog_series_labels_set_allowed_position ()
-
gog_series_labels_set_default_position, gog_series_labels_set_default_position () +
gog_series_labels_set_default_position, gog_series_labels_set_default_position ()
-
gog_series_labels_set_position, gog_series_labels_set_position () +
gog_series_labels_set_position, gog_series_labels_set_position ()
-
gog_series_labels_vector_get_element, gog_series_labels_vector_get_element () +
gog_series_labels_vector_get_element, gog_series_labels_vector_get_element ()
-
gog_series_lines_stroke, gog_series_lines_stroke () +
gog_series_lines_stroke, gog_series_lines_stroke ()
-
gog_series_lines_use_markers, gog_series_lines_use_markers () +
gog_series_lines_use_markers, gog_series_lines_use_markers ()
-
gog_series_map_XL_dim, gog_series_map_XL_dim () +
gog_series_map_XL_dim, gog_series_map_XL_dim ()
-
gog_series_num_elements, gog_series_num_elements () +
gog_series_num_elements, gog_series_num_elements ()
-
gog_series_populate_fill_type_combo, gog_series_populate_fill_type_combo () +
gog_series_populate_fill_type_combo, gog_series_populate_fill_type_combo ()
-
gog_series_set_dim, gog_series_set_dim () +
gog_series_set_dim, gog_series_set_dim ()
-
gog_series_set_fill_type, gog_series_set_fill_type () +
gog_series_set_fill_type, gog_series_set_fill_type ()
-
gog_series_set_index, gog_series_set_index () +
gog_series_set_index, gog_series_set_index ()
-
gog_series_set_name, gog_series_set_name () +
gog_series_set_name, gog_series_set_name ()
-
gog_series_set_XL_dim, gog_series_set_XL_dim () +
gog_series_set_XL_dim, gog_series_set_XL_dim ()
-
gog_style_new, gog_style_new () +
gog_style_new, gog_style_new ()
-
gog_text_get_markup, gog_text_get_markup () +
gog_text_get_markup, gog_text_get_markup ()
-
gog_text_get_str, gog_text_get_str () +
gog_text_get_str, gog_text_get_str ()
-
gog_theme_delete, gog_theme_delete () +
gog_theme_delete, gog_theme_delete ()
-
gog_theme_dup, gog_theme_dup () +
gog_theme_dup, gog_theme_dup ()
-
gog_theme_edit, gog_theme_edit () +
gog_theme_edit, gog_theme_edit ()
-
gog_theme_fillin_style, gog_theme_fillin_style () +
gog_theme_fillin_style, gog_theme_fillin_style ()
-
gog_theme_foreach, gog_theme_foreach () +
gog_theme_foreach, gog_theme_foreach ()
-
gog_theme_get_color_map, gog_theme_get_color_map () +
gog_theme_get_color_map, gog_theme_get_color_map ()
-
gog_theme_get_description, gog_theme_get_description () +
gog_theme_get_description, gog_theme_get_description ()
-
gog_theme_get_id, gog_theme_get_id () +
gog_theme_get_id, gog_theme_get_id ()
-
gog_theme_get_name, gog_theme_get_name () +
gog_theme_get_name, gog_theme_get_name ()
-
gog_theme_get_resource_type, gog_theme_get_resource_type () +
gog_theme_get_resource_type, gog_theme_get_resource_type ()
-
gog_theme_registry_get_theme_names, gog_theme_registry_get_theme_names () +
gog_theme_registry_get_theme_names, gog_theme_registry_get_theme_names ()
-
gog_theme_registry_lookup, gog_theme_registry_lookup () +
gog_theme_registry_lookup, gog_theme_registry_lookup ()
-
gog_theme_save_to_home_dir, gog_theme_save_to_home_dir () +
gog_theme_save_to_home_dir, gog_theme_save_to_home_dir ()
-
gog_tool_action_double_click, gog_tool_action_double_click () +
gog_tool_action_double_click, gog_tool_action_double_click ()
-
gog_tool_action_free, gog_tool_action_free () +
gog_tool_action_free, gog_tool_action_free ()
-
gog_tool_action_move, gog_tool_action_move () +
gog_tool_action_move, gog_tool_action_move ()
-
gog_tool_action_new, gog_tool_action_new () +
gog_tool_action_new, gog_tool_action_new ()
-
gog_trend_line_has_legend, gog_trend_line_has_legend () +
gog_trend_line_has_legend, gog_trend_line_has_legend ()
-
gog_trend_line_new_by_name, gog_trend_line_new_by_name () +
gog_trend_line_new_by_name, gog_trend_line_new_by_name ()
-
gog_trend_line_new_by_type, gog_trend_line_new_by_type () +
gog_trend_line_new_by_type, gog_trend_line_new_by_type ()
-
gog_trend_line_types, gog_trend_line_types () +
gog_trend_line_types, gog_trend_line_types ()
-
gog_view_find_child_view, gog_view_find_child_view () +
gog_view_find_child_view, gog_view_find_child_view ()
-
gog_view_get_model, gog_view_get_model () +
gog_view_get_model, gog_view_get_model ()
-
gog_view_get_natural_size, gog_view_get_natural_size () +
gog_view_get_natural_size, gog_view_get_natural_size ()
-
gog_view_get_tip_at_point, gog_view_get_tip_at_point () +
gog_view_get_tip_at_point, gog_view_get_tip_at_point ()
-
gog_view_get_toolkit, gog_view_get_toolkit () +
gog_view_get_toolkit, gog_view_get_toolkit ()
-
gog_view_get_tool_at_point, gog_view_get_tool_at_point () +
gog_view_get_tool_at_point, gog_view_get_tool_at_point ()
-
gog_view_get_view_at_point, gog_view_get_view_at_point () +
gog_view_get_view_at_point, gog_view_get_view_at_point ()
-
gog_view_padding_request, gog_view_padding_request () +
gog_view_padding_request, gog_view_padding_request ()
-
gog_view_queue_redraw, gog_view_queue_redraw () +
gog_view_queue_redraw, gog_view_queue_redraw ()
-
gog_view_queue_resize, gog_view_queue_resize () +
gog_view_queue_resize, gog_view_queue_resize ()
-
gog_view_render, gog_view_render () +
gog_view_render, gog_view_render ()
-
gog_view_render_toolkit, gog_view_render_toolkit () +
gog_view_render_toolkit, gog_view_render_toolkit ()
-
gog_view_size_allocate, gog_view_size_allocate () +
gog_view_size_allocate, gog_view_size_allocate ()
-
gog_view_size_child_request, gog_view_size_child_request () +
gog_view_size_child_request, gog_view_size_child_request ()
-
gog_view_size_request, gog_view_size_request () +
gog_view_size_request, gog_view_size_request ()
-
gog_view_update_sizes, gog_view_update_sizes () +
gog_view_update_sizes, gog_view_update_sizes ()
-
GOImage, GOImage +
GOImage, GOImage
-
GOImage:height, The “height” property +
GOImage:height, The “height” property
-
GOImage:width, The “width” property +
GOImage:width, The “width” property
-
GOImageClass, GOImageClass +
GOImageClass, GOImageClass
-
GOImageFormat, enum GOImageFormat +
GOImageFormat, enum GOImageFormat
-
GOImageFormatInfo, GOImageFormatInfo +
GOImageFormatInfo, GOImageFormatInfo
-
GOImageType, enum GOImageType +
GOImageType, enum GOImageType
-
GOIOContextClass, GOIOContextClass +
GOIOContextClass, GOIOContextClass
-
GoJustification, enum GoJustification +
GoJustification, enum GoJustification
-
GOLineDashSequence, GOLineDashSequence +
GOLineDashSequence, GOLineDashSequence
-
GOLineDashType, enum GOLineDashType +
GOLineDashType, enum GOLineDashType
-
GOLineInterpolation, enum GOLineInterpolation +
GOLineInterpolation, enum GOLineInterpolation
-
GOLocaleSel, GOLocaleSel +
GOLocaleSel, GOLocaleSel
-
GOLocaleSel::locale-changed, The “locale-changed” signal +
GOLocaleSel::locale-changed, The “locale-changed” signal
-
GOMapFunc, GOMapFunc () +
GOMapFunc, GOMapFunc ()
-
GOMarker, GOMarker +
GOMarker, GOMarker
-
GOMarkerShape, enum GOMarkerShape +
GOMarkerShape, enum GOMarkerShape
-
GOMemChunk, GOMemChunk +
GOMemChunk, GOMemChunk
-
GOMenuPixmaps, GOMenuPixmaps +
GOMenuPixmaps, GOMenuPixmaps
-
GOMenuPixmaps::changed, The “changed” signal +
GOMenuPixmaps::changed, The “changed” signal
-
GOMimePriority, enum GOMimePriority +
GOMimePriority, enum GOMimePriority
-
GONamedColor, GONamedColor +
GONamedColor, GONamedColor
-
GOOptionMenu, struct GOOptionMenu +
GOOptionMenu, struct GOOptionMenu
-
GOOptionMenu::changed, The “changed” signal +
GOOptionMenu::changed, The “changed” signal
-
GOOptionMenu:menu, The “menu” property +
GOOptionMenu:menu, The “menu” property
-
GOPalette, struct GOPalette +
GOPalette, struct GOPalette
-
GOPalette::activate, The “activate” signal +
GOPalette::activate, The “activate” signal
-
GOPalette::automatic-activate, The “automatic-activate” signal +
GOPalette::automatic-activate, The “automatic-activate” signal
-
GOPalette::custom-activate, The “custom-activate” signal +
GOPalette::custom-activate, The “custom-activate” signal
-
GOPaletteSwatchRenderCallback, GOPaletteSwatchRenderCallback () +
GOPaletteSwatchRenderCallback, GOPaletteSwatchRenderCallback ()
-
GOPaletteSwatchTooltipCallback, GOPaletteSwatchTooltipCallback () +
GOPaletteSwatchTooltipCallback, GOPaletteSwatchTooltipCallback ()
-
GOParseKeyValueFunc, GOParseKeyValueFunc () +
GOParseKeyValueFunc, GOParseKeyValueFunc ()
-
GOPath, GOPath +
GOPath, GOPath
-
GOPathClosePathFunc, GOPathClosePathFunc () +
GOPathClosePathFunc, GOPathClosePathFunc ()
-
GOPathCurveToFunc, GOPathCurveToFunc () +
GOPathCurveToFunc, GOPathCurveToFunc ()
-
GOPathDirection, enum GOPathDirection +
GOPathDirection, enum GOPathDirection
-
GOPathLineToFunc, GOPathLineToFunc () +
GOPathLineToFunc, GOPathLineToFunc ()
-
GOPathMoveToFunc, GOPathMoveToFunc () +
GOPathMoveToFunc, GOPathMoveToFunc ()
-
GOPathOptions, enum GOPathOptions +
GOPathOptions, enum GOPathOptions
-
GOPathPoint, GOPathPoint +
GOPathPoint, GOPathPoint
-
GOPattern, GOPattern +
GOPattern, GOPattern
-
GOPatternType, enum GOPatternType +
GOPatternType, enum GOPatternType
-
GOPersist, GOPersist +
GOPersist, GOPersist
-
GOPersistClass, GOPersistClass +
GOPersistClass, GOPersistClass
-
GOPixbuf, GOPixbuf +
GOPixbuf, GOPixbuf
-
GOPixbuf:image-type, The “image-type” property +
GOPixbuf:image-type, The “image-type” property
-
GOPixbuf:pixbuf, The “pixbuf” property +
GOPixbuf:pixbuf, The “pixbuf” property
-
GOPluginLoaderClass, GOPluginLoaderClass +
GOPluginLoaderClass, GOPluginLoaderClass
-
GOPluginLoaderModule, GOPluginLoaderModule +
GOPluginLoaderModule, GOPluginLoaderModule
-
GOPluginLoaderModuleClass, GOPluginLoaderModuleClass +
GOPluginLoaderModuleClass, GOPluginLoaderModuleClass
-
GOPluginMethod, GOPluginMethod () +
GOPluginMethod, GOPluginMethod ()
-
GOPluginService, GOPluginService +
GOPluginService, GOPluginService
-
GOPluginServiceClass, GOPluginServiceClass +
GOPluginServiceClass, GOPluginServiceClass
-
GOPluginServiceCreate, GOPluginServiceCreate () +
GOPluginServiceCreate, GOPluginServiceCreate ()
-
GOPluginServiceFileOpener, GOPluginServiceFileOpener +
GOPluginServiceFileOpener, GOPluginServiceFileOpener
-
GOPluginServiceFileOpenerCallbacks, GOPluginServiceFileOpenerCallbacks +
GOPluginServiceFileOpenerCallbacks, GOPluginServiceFileOpenerCallbacks
-
GOPluginServiceFileSaver, GOPluginServiceFileSaver +
GOPluginServiceFileSaver, GOPluginServiceFileSaver
-
GOPluginServiceFileSaverCallbacks, GOPluginServiceFileSaverCallbacks +
GOPluginServiceFileSaverCallbacks, GOPluginServiceFileSaverCallbacks
-
GOPluginServiceGeneral, GOPluginServiceGeneral +
GOPluginServiceGeneral, GOPluginServiceGeneral
-
GOPluginServiceGeneralCallbacks, GOPluginServiceGeneralCallbacks +
GOPluginServiceGeneralCallbacks, GOPluginServiceGeneralCallbacks
-
GOPluginServiceGObjectLoader, GOPluginServiceGObjectLoader +
GOPluginServiceGObjectLoader, GOPluginServiceGObjectLoader
-
GOPluginServiceGObjectLoaderClass, GOPluginServiceGObjectLoaderClass +
GOPluginServiceGObjectLoaderClass, GOPluginServiceGObjectLoaderClass
-
GOPluginServicePluginLoader, GOPluginServicePluginLoader +
GOPluginServicePluginLoader, GOPluginServicePluginLoader
-
GOPluginServicePluginLoaderCallbacks, GOPluginServicePluginLoaderCallbacks +
GOPluginServicePluginLoaderCallbacks, GOPluginServicePluginLoaderCallbacks
-
GOPluginServiceResource, GOPluginServiceResource +
GOPluginServiceResource, GOPluginServiceResource
-
GOPluginServiceSimple, GOPluginServiceSimple +
GOPluginServiceSimple, GOPluginServiceSimple
-
GOPoint, GOPoint +
GOPoint, GOPoint
-
GORect, GORect +
GORect, GORect
-
GORegexp, GORegexp +
GORegexp, GORegexp
-
GORegmatch, GORegmatch +
GORegmatch, GORegmatch
-
GORegoff, GORegoff +
GORegoff, GORegoff
-
GORegressionFunction, GORegressionFunction () +
GORegressionFunction, GORegressionFunction ()
-
GORegressionFunctionl, GORegressionFunctionl () +
GORegressionFunctionl, GORegressionFunctionl ()
-
GORegressionResult, enum GORegressionResult +
GORegressionResult, enum GORegressionResult
-
GORegressionStat, GORegressionStat +
GORegressionStat, GORegressionStat
-
GORegressionStatl, GORegressionStatl +
GORegressionStatl, GORegressionStatl
-
GoResourceType, enum GoResourceType +
GoResourceType, enum GoResourceType
-
GORotationSel, GORotationSel +
GORotationSel, GORotationSel
-
GORotationSel::rotation-changed, The “rotation-changed” signal +
GORotationSel::rotation-changed, The “rotation-changed” signal
-
GOSearchReplace, GOSearchReplace +
GOSearchReplace, GOSearchReplace
-
GOSearchReplace:ignore-case, The “ignore-case” property +
GOSearchReplace:ignore-case, The “ignore-case” property
-
GOSearchReplace:is-regexp, The “is-regexp” property +
GOSearchReplace:is-regexp, The “is-regexp” property
-
GOSearchReplace:match-words, The “match-words” property +
GOSearchReplace:match-words, The “match-words” property
-
GOSearchReplace:preserve-case, The “preserve-case” property +
GOSearchReplace:preserve-case, The “preserve-case” property
-
GOSearchReplace:replace-text, The “replace-text” property +
GOSearchReplace:replace-text, The “replace-text” property
-
GOSearchReplace:search-text, The “search-text” property +
GOSearchReplace:search-text, The “search-text” property
-
GOSelector, struct GOSelector +
GOSelector, struct GOSelector
-
GOSelector::activate, The “activate” signal +
GOSelector::activate, The “activate” signal
-
GOSelectorDndDataGet, GOSelectorDndDataGet () +
GOSelectorDndDataGet, GOSelectorDndDataGet ()
-
GOSelectorDndDataReceived, GOSelectorDndDataReceived () +
GOSelectorDndDataReceived, GOSelectorDndDataReceived ()
-
GOSelectorDndFillIcon, GOSelectorDndFillIcon () +
GOSelectorDndFillIcon, GOSelectorDndFillIcon ()
-
GOSeverity, enum GOSeverity +
GOSeverity, enum GOSeverity
-
GOSnapshotType, enum GOSnapshotType +
GOSnapshotType, enum GOSnapshotType
-
GOSpectre, GOSpectre +
GOSpectre, GOSpectre
-
GOString, GOString +
GOString, GOString
-
GOStringPhonetic, GOStringPhonetic +
GOStringPhonetic, GOStringPhonetic
-
GOStyle, GOStyle +
GOStyle, GOStyle
-
GOStyledObject, GOStyledObject +
GOStyledObject, GOStyledObject
-
GOStyledObjectClass, GOStyledObjectClass +
GOStyledObjectClass, GOStyledObjectClass
-
GOStyleFill, enum GOStyleFill +
GOStyleFill, enum GOStyleFill
-
GOStyleFlag, enum GOStyleFlag +
GOStyleFlag, enum GOStyleFlag
-
GOStyleLine, GOStyleLine +
GOStyleLine, GOStyleLine
-
GOStyleMark, GOStyleMark +
GOStyleMark, GOStyleMark
-
GOSvg, GOSvg +
GOSvg, GOSvg
-
GOTranslateFunc, GOTranslateFunc () +
GOTranslateFunc, GOTranslateFunc ()
-
GOUndo, struct GOUndo +
GOUndo, struct GOUndo
-
GOUndoBinary, struct GOUndoBinary +
GOUndoBinary, struct GOUndoBinary
-
GOUndoBinaryClass, struct GOUndoBinaryClass +
GOUndoBinaryClass, struct GOUndoBinaryClass
-
GOUndoBinaryFunc, GOUndoBinaryFunc () +
GOUndoBinaryFunc, GOUndoBinaryFunc ()
-
GOUndoClass, struct GOUndoClass +
GOUndoClass, struct GOUndoClass
-
GOUndoGroup, struct GOUndoGroup +
GOUndoGroup, struct GOUndoGroup
-
GOUndoGroupClass, struct GOUndoGroupClass +
GOUndoGroupClass, struct GOUndoGroupClass
-
GOUndoUnary, struct GOUndoUnary +
GOUndoUnary, struct GOUndoUnary
-
GOUndoUnaryClass, struct GOUndoUnaryClass +
GOUndoUnaryClass, struct GOUndoUnaryClass
-
GOUndoUnaryFunc, GOUndoUnaryFunc () +
GOUndoUnaryFunc, GOUndoUnaryFunc ()
-
go_accumulator_add, go_accumulator_add () +
go_accumulator_add, go_accumulator_add ()
-
go_accumulator_addl, go_accumulator_addl () +
go_accumulator_addl, go_accumulator_addl ()
-
go_accumulator_add_quad, go_accumulator_add_quad () +
go_accumulator_add_quad, go_accumulator_add_quad ()
-
go_accumulator_add_quadl, go_accumulator_add_quadl () +
go_accumulator_add_quadl, go_accumulator_add_quadl ()
-
go_accumulator_clear, go_accumulator_clear () +
go_accumulator_clear, go_accumulator_clear ()
-
go_accumulator_clearl, go_accumulator_clearl () +
go_accumulator_clearl, go_accumulator_clearl ()
-
go_accumulator_end, go_accumulator_end () +
go_accumulator_end, go_accumulator_end ()
-
go_accumulator_endl, go_accumulator_endl () +
go_accumulator_endl, go_accumulator_endl ()
-
go_accumulator_free, go_accumulator_free () +
go_accumulator_free, go_accumulator_free ()
-
go_accumulator_freel, go_accumulator_freel () +
go_accumulator_freel, go_accumulator_freel ()
-
go_accumulator_functional, go_accumulator_functional () +
go_accumulator_functional, go_accumulator_functional ()
-
go_accumulator_functionall, go_accumulator_functionall () +
go_accumulator_functionall, go_accumulator_functionall ()
-
go_accumulator_new, go_accumulator_new () +
go_accumulator_new, go_accumulator_new ()
-
go_accumulator_newl, go_accumulator_newl () +
go_accumulator_newl, go_accumulator_newl ()
-
go_accumulator_start, go_accumulator_start () +
go_accumulator_start, go_accumulator_start ()
-
go_accumulator_startl, go_accumulator_startl () +
go_accumulator_startl, go_accumulator_startl ()
-
go_accumulator_value, go_accumulator_value () +
go_accumulator_value, go_accumulator_value ()
-
go_accumulator_valuel, go_accumulator_valuel () +
go_accumulator_valuel, go_accumulator_valuel ()
-
go_add_epsilon, go_add_epsilon () +
go_add_epsilon, go_add_epsilon ()
-
go_add_epsilonl, go_add_epsilonl () +
go_add_epsilonl, go_add_epsilonl ()
-
go_arrow_clear, go_arrow_clear () +
go_arrow_clear, go_arrow_clear ()
-
go_arrow_draw, go_arrow_draw () +
go_arrow_draw, go_arrow_draw ()
-
go_arrow_dup, go_arrow_dup () +
go_arrow_dup, go_arrow_dup ()
-
go_arrow_equal, go_arrow_equal () +
go_arrow_equal, go_arrow_equal ()
-
go_arrow_init, go_arrow_init () +
go_arrow_init, go_arrow_init ()
-
go_arrow_init_kite, go_arrow_init_kite () +
go_arrow_init_kite, go_arrow_init_kite ()
-
go_arrow_init_oval, go_arrow_init_oval () +
go_arrow_init_oval, go_arrow_init_oval ()
-
go_arrow_sel_get_arrow, go_arrow_sel_get_arrow () +
go_arrow_sel_get_arrow, go_arrow_sel_get_arrow ()
-
go_arrow_sel_get_type, go_arrow_sel_get_type () +
go_arrow_sel_get_type, go_arrow_sel_get_type ()
-
go_arrow_sel_new, go_arrow_sel_new () +
go_arrow_sel_new, go_arrow_sel_new ()
-
go_arrow_sel_set_arrow, go_arrow_sel_set_arrow () +
go_arrow_sel_set_arrow, go_arrow_sel_set_arrow ()
-
go_arrow_type_as_str, go_arrow_type_as_str () +
go_arrow_type_as_str, go_arrow_type_as_str ()
-
go_arrow_type_from_str, go_arrow_type_from_str () +
go_arrow_type_from_str, go_arrow_type_from_str ()
-
go_ascii_strcase_equal, go_ascii_strcase_equal () +
go_ascii_strcase_equal, go_ascii_strcase_equal ()
-
go_ascii_strcase_hash, go_ascii_strcase_hash () +
go_ascii_strcase_hash, go_ascii_strcase_hash ()
-
go_ascii_strtod, go_ascii_strtod () +
go_ascii_strtod, go_ascii_strtod ()
-
go_ascii_strtold, go_ascii_strtold () +
go_ascii_strtold, go_ascii_strtold ()
-
go_atan2pi, go_atan2pi () +
go_atan2pi, go_atan2pi ()
-
go_atan2pil, go_atan2pil () +
go_atan2pil, go_atan2pil ()
-
go_atanpi, go_atanpi () +
go_atanpi, go_atanpi ()
-
go_atanpil, go_atanpil () +
go_atanpil, go_atanpil ()
-
go_basename_from_uri, go_basename_from_uri () +
go_basename_from_uri, go_basename_from_uri ()
-
go_bezier_spline_destroy, go_bezier_spline_destroy () +
go_bezier_spline_destroy, go_bezier_spline_destroy ()
-
go_bezier_spline_init, go_bezier_spline_init () +
go_bezier_spline_init, go_bezier_spline_init ()
-
go_bezier_spline_to_cairo, go_bezier_spline_to_cairo () +
go_bezier_spline_to_cairo, go_bezier_spline_to_cairo ()
-
go_bezier_spline_to_path, go_bezier_spline_to_path () +
go_bezier_spline_to_path, go_bezier_spline_to_path ()
-
GO_CAIRO_CLAMP, GO_CAIRO_CLAMP() +
GO_CAIRO_CLAMP, GO_CAIRO_CLAMP()
-
GO_CAIRO_CLAMP_SNAP, GO_CAIRO_CLAMP_SNAP() +
GO_CAIRO_CLAMP_SNAP, GO_CAIRO_CLAMP_SNAP()
-
go_cairo_convert_data_from_pixbuf, go_cairo_convert_data_from_pixbuf () +
go_cairo_convert_data_from_pixbuf, go_cairo_convert_data_from_pixbuf ()
-
go_cairo_convert_data_to_pixbuf, go_cairo_convert_data_to_pixbuf () +
go_cairo_convert_data_to_pixbuf, go_cairo_convert_data_to_pixbuf ()
-
go_cairo_emit_svg_path, go_cairo_emit_svg_path () +
go_cairo_emit_svg_path, go_cairo_emit_svg_path ()
-
go_cairo_surface_is_vector, go_cairo_surface_is_vector () +
go_cairo_surface_is_vector, go_cairo_surface_is_vector ()
-
go_calendar_button_get_calendar, go_calendar_button_get_calendar () +
go_calendar_button_get_calendar, go_calendar_button_get_calendar ()
-
go_calendar_button_get_date, go_calendar_button_get_date () +
go_calendar_button_get_date, go_calendar_button_get_date ()
-
go_calendar_button_new, go_calendar_button_new () +
go_calendar_button_new, go_calendar_button_new ()
-
go_calendar_button_set_date, go_calendar_button_set_date () +
go_calendar_button_set_date, go_calendar_button_set_date ()
-
go_charmap_sel_get_encoding, go_charmap_sel_get_encoding () +
go_charmap_sel_get_encoding, go_charmap_sel_get_encoding ()
-
go_charmap_sel_get_encoding_name, go_charmap_sel_get_encoding_name () +
go_charmap_sel_get_encoding_name, go_charmap_sel_get_encoding_name ()
-
go_charmap_sel_new, go_charmap_sel_new () +
go_charmap_sel_new, go_charmap_sel_new ()
-
go_charmap_sel_set_encoding, go_charmap_sel_set_encoding () +
go_charmap_sel_set_encoding, go_charmap_sel_set_encoding ()
-
go_cmd_context_error, go_cmd_context_error () +
go_cmd_context_error, go_cmd_context_error ()
-
go_cmd_context_error_export, go_cmd_context_error_export () +
go_cmd_context_error_export, go_cmd_context_error_export ()
-
go_cmd_context_error_import, go_cmd_context_error_import () +
go_cmd_context_error_import, go_cmd_context_error_import ()
-
go_cmd_context_error_info, go_cmd_context_error_info () +
go_cmd_context_error_info, go_cmd_context_error_info ()
-
go_cmd_context_error_info_list, go_cmd_context_error_info_list () +
go_cmd_context_error_info_list, go_cmd_context_error_info_list ()
-
go_cmd_context_error_invalid, go_cmd_context_error_invalid () +
go_cmd_context_error_invalid, go_cmd_context_error_invalid ()
-
go_cmd_context_error_system, go_cmd_context_error_system () +
go_cmd_context_error_system, go_cmd_context_error_system ()
-
go_cmd_context_get_password, go_cmd_context_get_password () +
go_cmd_context_get_password, go_cmd_context_get_password ()
-
go_cmd_context_progress_message_set, go_cmd_context_progress_message_set () +
go_cmd_context_progress_message_set, go_cmd_context_progress_message_set ()
-
go_cmd_context_progress_set, go_cmd_context_progress_set () +
go_cmd_context_progress_set, go_cmd_context_progress_set ()
-
go_cmd_context_set_sensitive, go_cmd_context_set_sensitive () +
go_cmd_context_set_sensitive, go_cmd_context_set_sensitive ()
-
GO_CM_PER_IN, GO_CM_PER_IN +
GO_CM_PER_IN, GO_CM_PER_IN
-
GO_CM_TO_EMU, GO_CM_TO_EMU() +
GO_CM_TO_EMU, GO_CM_TO_EMU()
-
GO_CM_TO_IN, GO_CM_TO_IN() +
GO_CM_TO_IN, GO_CM_TO_IN()
-
GO_CM_TO_PT, GO_CM_TO_PT() +
GO_CM_TO_PT, GO_CM_TO_PT()
-
GO_CM_TO_UN, GO_CM_TO_UN() +
GO_CM_TO_UN, GO_CM_TO_UN()
-
go_color_as_str, go_color_as_str () +
go_color_as_str, go_color_as_str ()
-
GO_COLOR_BLACK, GO_COLOR_BLACK +
GO_COLOR_BLACK, GO_COLOR_BLACK
-
GO_COLOR_BLUE, GO_COLOR_BLUE +
GO_COLOR_BLUE, GO_COLOR_BLUE
-
GO_COLOR_CHANGE_A, GO_COLOR_CHANGE_A() +
GO_COLOR_CHANGE_A, GO_COLOR_CHANGE_A()
-
GO_COLOR_CHANGE_B, GO_COLOR_CHANGE_B() +
GO_COLOR_CHANGE_B, GO_COLOR_CHANGE_B()
-
GO_COLOR_CHANGE_G, GO_COLOR_CHANGE_G() +
GO_COLOR_CHANGE_G, GO_COLOR_CHANGE_G()
-
GO_COLOR_CHANGE_R, GO_COLOR_CHANGE_R() +
GO_COLOR_CHANGE_R, GO_COLOR_CHANGE_R()
-
GO_COLOR_CYAN, GO_COLOR_CYAN +
GO_COLOR_CYAN, GO_COLOR_CYAN
-
GO_COLOR_DOUBLE_A, GO_COLOR_DOUBLE_A() +
GO_COLOR_DOUBLE_A, GO_COLOR_DOUBLE_A()
-
GO_COLOR_DOUBLE_B, GO_COLOR_DOUBLE_B() +
GO_COLOR_DOUBLE_B, GO_COLOR_DOUBLE_B()
-
GO_COLOR_DOUBLE_G, GO_COLOR_DOUBLE_G() +
GO_COLOR_DOUBLE_G, GO_COLOR_DOUBLE_G()
-
GO_COLOR_DOUBLE_R, GO_COLOR_DOUBLE_R() +
GO_COLOR_DOUBLE_R, GO_COLOR_DOUBLE_R()
-
GO_COLOR_FROM_GDK_RGBA, GO_COLOR_FROM_GDK_RGBA() +
GO_COLOR_FROM_GDK_RGBA, GO_COLOR_FROM_GDK_RGBA()
-
go_color_from_gdk_rgba, go_color_from_gdk_rgba () +
go_color_from_gdk_rgba, go_color_from_gdk_rgba ()
-
GO_COLOR_FROM_RGB, GO_COLOR_FROM_RGB() +
GO_COLOR_FROM_RGB, GO_COLOR_FROM_RGB()
-
GO_COLOR_FROM_RGBA, GO_COLOR_FROM_RGBA() +
GO_COLOR_FROM_RGBA, GO_COLOR_FROM_RGBA()
-
go_color_from_str, go_color_from_str () +
go_color_from_str, go_color_from_str ()
-
GO_COLOR_GREEN, GO_COLOR_GREEN +
GO_COLOR_GREEN, GO_COLOR_GREEN
-
GO_COLOR_GREY, GO_COLOR_GREY() +
GO_COLOR_GREY, GO_COLOR_GREY()
-
go_color_group_add_color, go_color_group_add_color () +
go_color_group_add_color, go_color_group_add_color ()
-
go_color_group_fetch, go_color_group_fetch () +
go_color_group_fetch, go_color_group_fetch ()
-
go_color_group_find, go_color_group_find () +
go_color_group_find, go_color_group_find ()
-
GO_COLOR_GROUP_HISTORY_SIZE, GO_COLOR_GROUP_HISTORY_SIZE +
GO_COLOR_GROUP_HISTORY_SIZE, GO_COLOR_GROUP_HISTORY_SIZE
-
GO_COLOR_INTERPOLATE, GO_COLOR_INTERPOLATE() +
GO_COLOR_INTERPOLATE, GO_COLOR_INTERPOLATE()
-
GO_COLOR_MONO_INTERPOLATE, GO_COLOR_MONO_INTERPOLATE() +
GO_COLOR_MONO_INTERPOLATE, GO_COLOR_MONO_INTERPOLATE()
-
GO_COLOR_RED, GO_COLOR_RED +
GO_COLOR_RED, GO_COLOR_RED
-
GO_COLOR_TO_CAIRO, GO_COLOR_TO_CAIRO() +
GO_COLOR_TO_CAIRO, GO_COLOR_TO_CAIRO()
-
go_color_to_gdk_rgba, go_color_to_gdk_rgba () +
go_color_to_gdk_rgba, go_color_to_gdk_rgba ()
-
go_color_to_pango, go_color_to_pango () +
go_color_to_pango, go_color_to_pango ()
-
GO_COLOR_TO_RGB, GO_COLOR_TO_RGB() +
GO_COLOR_TO_RGB, GO_COLOR_TO_RGB()
-
GO_COLOR_TO_RGBA, GO_COLOR_TO_RGBA() +
GO_COLOR_TO_RGBA, GO_COLOR_TO_RGBA()
-
GO_COLOR_UINT_A, GO_COLOR_UINT_A() +
GO_COLOR_UINT_A, GO_COLOR_UINT_A()
-
GO_COLOR_UINT_B, GO_COLOR_UINT_B() +
GO_COLOR_UINT_B, GO_COLOR_UINT_B()
-
GO_COLOR_UINT_G, GO_COLOR_UINT_G() +
GO_COLOR_UINT_G, GO_COLOR_UINT_G()
-
GO_COLOR_UINT_R, GO_COLOR_UINT_R() +
GO_COLOR_UINT_R, GO_COLOR_UINT_R()
-
GO_COLOR_VIOLET, GO_COLOR_VIOLET +
GO_COLOR_VIOLET, GO_COLOR_VIOLET
-
GO_COLOR_WHITE, GO_COLOR_WHITE +
GO_COLOR_WHITE, GO_COLOR_WHITE
-
GO_COLOR_YELLOW, GO_COLOR_YELLOW +
GO_COLOR_YELLOW, GO_COLOR_YELLOW
-
go_combo_box_construct, go_combo_box_construct () +
go_combo_box_construct, go_combo_box_construct ()
-
go_combo_box_get_pos, go_combo_box_get_pos () +
go_combo_box_get_pos, go_combo_box_get_pos ()
-
go_combo_box_get_title, go_combo_box_get_title () +
go_combo_box_get_title, go_combo_box_get_title ()
-
go_combo_box_popup_display, go_combo_box_popup_display () +
go_combo_box_popup_display, go_combo_box_popup_display ()
-
go_combo_box_popup_hide, go_combo_box_popup_hide () +
go_combo_box_popup_hide, go_combo_box_popup_hide ()
-
go_combo_box_set_display, go_combo_box_set_display () +
go_combo_box_set_display, go_combo_box_set_display ()
-
go_combo_box_set_relief, go_combo_box_set_relief () +
go_combo_box_set_relief, go_combo_box_set_relief ()
-
go_combo_box_set_tearable, go_combo_box_set_tearable () +
go_combo_box_set_tearable, go_combo_box_set_tearable ()
-
go_combo_box_set_title, go_combo_box_set_title () +
go_combo_box_set_title, go_combo_box_set_title ()
-
go_combo_box_set_tooltip, go_combo_box_set_tooltip () +
go_combo_box_set_tooltip, go_combo_box_set_tooltip ()
-
go_combo_color_get_color, go_combo_color_get_color () +
go_combo_color_get_color, go_combo_color_get_color ()
-
go_combo_color_new, go_combo_color_new () +
go_combo_color_new, go_combo_color_new ()
-
go_combo_color_set_allow_alpha, go_combo_color_set_allow_alpha () +
go_combo_color_set_allow_alpha, go_combo_color_set_allow_alpha ()
-
go_combo_color_set_color, go_combo_color_set_color () +
go_combo_color_set_color, go_combo_color_set_color ()
-
go_combo_color_set_color_gdk, go_combo_color_set_color_gdk () +
go_combo_color_set_color_gdk, go_combo_color_set_color_gdk ()
-
go_combo_color_set_color_to_default, go_combo_color_set_color_to_default () +
go_combo_color_set_color_to_default, go_combo_color_set_color_to_default ()
-
go_combo_color_set_icon, go_combo_color_set_icon () +
go_combo_color_set_icon, go_combo_color_set_icon ()
-
go_combo_color_set_instant_apply, go_combo_color_set_instant_apply () +
go_combo_color_set_instant_apply, go_combo_color_set_instant_apply ()
-
go_combo_pixmaps_add_element, go_combo_pixmaps_add_element () +
go_combo_pixmaps_add_element, go_combo_pixmaps_add_element ()
-
go_combo_pixmaps_clear_elements, go_combo_pixmaps_clear_elements () +
go_combo_pixmaps_clear_elements, go_combo_pixmaps_clear_elements ()
-
go_combo_pixmaps_get_preview, go_combo_pixmaps_get_preview () +
go_combo_pixmaps_get_preview, go_combo_pixmaps_get_preview ()
-
go_combo_pixmaps_get_selected, go_combo_pixmaps_get_selected () +
go_combo_pixmaps_get_selected, go_combo_pixmaps_get_selected ()
-
go_combo_pixmaps_new, go_combo_pixmaps_new () +
go_combo_pixmaps_new, go_combo_pixmaps_new ()
-
go_combo_pixmaps_select_id, go_combo_pixmaps_select_id () +
go_combo_pixmaps_select_id, go_combo_pixmaps_select_id ()
-
go_combo_pixmaps_select_index, go_combo_pixmaps_select_index () +
go_combo_pixmaps_select_index, go_combo_pixmaps_select_index ()
-
go_complexl_get_type, go_complexl_get_type () +
go_complexl_get_type, go_complexl_get_type ()
-
go_complex_add, go_complex_add () +
go_complex_add, go_complex_add ()
-
go_complex_addl, go_complex_addl () +
go_complex_addl, go_complex_addl ()
-
go_complex_angle, go_complex_angle () +
go_complex_angle, go_complex_angle ()
-
go_complex_anglel, go_complex_anglel () +
go_complex_anglel, go_complex_anglel ()
-
go_complex_angle_pi, go_complex_angle_pi () +
go_complex_angle_pi, go_complex_angle_pi ()
-
go_complex_angle_pil, go_complex_angle_pil () +
go_complex_angle_pil, go_complex_angle_pil ()
-
go_complex_conj, go_complex_conj () +
go_complex_conj, go_complex_conj ()
-
go_complex_conjl, go_complex_conjl () +
go_complex_conjl, go_complex_conjl ()
-
go_complex_cos, go_complex_cos () +
go_complex_cos, go_complex_cos ()
-
go_complex_cosl, go_complex_cosl () +
go_complex_cosl, go_complex_cosl ()
-
go_complex_div, go_complex_div () +
go_complex_div, go_complex_div ()
-
go_complex_divl, go_complex_divl () +
go_complex_divl, go_complex_divl ()
-
go_complex_exp, go_complex_exp () +
go_complex_exp, go_complex_exp ()
-
go_complex_expl, go_complex_expl () +
go_complex_expl, go_complex_expl ()
-
go_complex_from_polar, go_complex_from_polar () +
go_complex_from_polar, go_complex_from_polar ()
-
go_complex_from_polarl, go_complex_from_polarl () +
go_complex_from_polarl, go_complex_from_polarl ()
-
go_complex_from_polar_pi, go_complex_from_polar_pi () +
go_complex_from_polar_pi, go_complex_from_polar_pi ()
-
go_complex_from_polar_pil, go_complex_from_polar_pil () +
go_complex_from_polar_pil, go_complex_from_polar_pil ()
-
go_complex_from_string, go_complex_from_string () +
go_complex_from_string, go_complex_from_string ()
-
go_complex_from_stringl, go_complex_from_stringl () +
go_complex_from_stringl, go_complex_from_stringl ()
-
go_complex_get_type, go_complex_get_type () +
go_complex_get_type, go_complex_get_type ()
-
go_complex_init, go_complex_init () +
go_complex_init, go_complex_init ()
-
go_complex_initl, go_complex_initl () +
go_complex_initl, go_complex_initl ()
-
go_complex_invalid, go_complex_invalid () +
go_complex_invalid, go_complex_invalid ()
-
go_complex_invalidl, go_complex_invalidl () +
go_complex_invalidl, go_complex_invalidl ()
-
go_complex_invalid_p, go_complex_invalid_p () +
go_complex_invalid_p, go_complex_invalid_p ()
-
go_complex_invalid_pl, go_complex_invalid_pl () +
go_complex_invalid_pl, go_complex_invalid_pl ()
-
go_complex_ln, go_complex_ln () +
go_complex_ln, go_complex_ln ()
-
go_complex_lnl, go_complex_lnl () +
go_complex_lnl, go_complex_lnl ()
-
go_complex_mod, go_complex_mod () +
go_complex_mod, go_complex_mod ()
-
go_complex_modl, go_complex_modl () +
go_complex_modl, go_complex_modl ()
-
go_complex_mul, go_complex_mul () +
go_complex_mul, go_complex_mul ()
-
go_complex_mull, go_complex_mull () +
go_complex_mull, go_complex_mull ()
-
go_complex_pow, go_complex_pow () +
go_complex_pow, go_complex_pow ()
-
go_complex_powl, go_complex_powl () +
go_complex_powl, go_complex_powl ()
-
go_complex_powx, go_complex_powx () +
go_complex_powx, go_complex_powx ()
-
go_complex_powxl, go_complex_powxl () +
go_complex_powxl, go_complex_powxl ()
-
go_complex_real, go_complex_real () +
go_complex_real, go_complex_real ()
-
go_complex_reall, go_complex_reall () +
go_complex_reall, go_complex_reall ()
-
go_complex_real_p, go_complex_real_p () +
go_complex_real_p, go_complex_real_p ()
-
go_complex_real_pl, go_complex_real_pl () +
go_complex_real_pl, go_complex_real_pl ()
-
go_complex_scale_real, go_complex_scale_real () +
go_complex_scale_real, go_complex_scale_real ()
-
go_complex_scale_reall, go_complex_scale_reall () +
go_complex_scale_reall, go_complex_scale_reall ()
-
go_complex_sin, go_complex_sin () +
go_complex_sin, go_complex_sin ()
-
go_complex_sinl, go_complex_sinl () +
go_complex_sinl, go_complex_sinl ()
-
go_complex_sqrt, go_complex_sqrt () +
go_complex_sqrt, go_complex_sqrt ()
-
go_complex_sqrtl, go_complex_sqrtl () +
go_complex_sqrtl, go_complex_sqrtl ()
-
go_complex_sub, go_complex_sub () +
go_complex_sub, go_complex_sub ()
-
go_complex_subl, go_complex_subl () +
go_complex_subl, go_complex_subl ()
-
go_complex_tan, go_complex_tan () +
go_complex_tan, go_complex_tan ()
-
go_complex_tanl, go_complex_tanl () +
go_complex_tanl, go_complex_tanl ()
-
go_complex_to_polar, go_complex_to_polar () +
go_complex_to_polar, go_complex_to_polar ()
-
go_complex_to_polarl, go_complex_to_polarl () +
go_complex_to_polarl, go_complex_to_polarl ()
-
go_complex_to_string, go_complex_to_string () +
go_complex_to_string, go_complex_to_string ()
-
go_complex_to_stringl, go_complex_to_stringl () +
go_complex_to_stringl, go_complex_to_stringl ()
-
go_complex_zero_p, go_complex_zero_p () +
go_complex_zero_p, go_complex_zero_p ()
-
go_complex_zero_pl, go_complex_zero_pl () +
go_complex_zero_pl, go_complex_zero_pl ()
-
go_components_add_filter, go_components_add_filter () +
go_components_add_filter, go_components_add_filter ()
-
go_components_add_mime_type, go_components_add_mime_type () +
go_components_add_mime_type, go_components_add_mime_type ()
-
go_components_get_mime_suffix, go_components_get_mime_suffix () +
go_components_get_mime_suffix, go_components_get_mime_suffix ()
-
go_components_get_mime_types, go_components_get_mime_types () +
go_components_get_mime_types, go_components_get_mime_types ()
-
go_components_get_priority, go_components_get_priority () +
go_components_get_priority, go_components_get_priority ()
-
go_components_set_mime_suffix, go_components_set_mime_suffix () +
go_components_set_mime_suffix, go_components_set_mime_suffix ()
-
go_components_support_clipboard, go_components_support_clipboard () +
go_components_support_clipboard, go_components_support_clipboard ()
-
go_component_build_snapshot, go_component_build_snapshot () +
go_component_build_snapshot, go_component_build_snapshot ()
-
go_component_duplicate, go_component_duplicate () +
go_component_duplicate, go_component_duplicate ()
-
go_component_edit, go_component_edit () +
go_component_edit, go_component_edit ()
-
go_component_emit_changed, go_component_emit_changed () +
go_component_emit_changed, go_component_emit_changed ()
-
go_component_export_image, go_component_export_image () +
go_component_export_image, go_component_export_image ()
-
go_component_get_command_context, go_component_get_command_context () +
go_component_get_command_context, go_component_get_command_context ()
-
go_component_get_data, go_component_get_data () +
go_component_get_data, go_component_get_data ()
-
go_component_get_inline, go_component_get_inline () +
go_component_get_inline, go_component_get_inline ()
-
go_component_get_mime_type, go_component_get_mime_type () +
go_component_get_mime_type, go_component_get_mime_type ()
-
go_component_get_size, go_component_get_size () +
go_component_get_size, go_component_get_size ()
-
go_component_get_snapshot, go_component_get_snapshot () +
go_component_get_snapshot, go_component_get_snapshot ()
-
go_component_get_use_font_from_app, go_component_get_use_font_from_app () +
go_component_get_use_font_from_app, go_component_get_use_font_from_app ()
-
go_component_is_editable, go_component_is_editable () +
go_component_is_editable, go_component_is_editable ()
-
go_component_is_resizable, go_component_is_resizable () +
go_component_is_resizable, go_component_is_resizable ()
-
go_component_new_by_mime_type, go_component_new_by_mime_type () +
go_component_new_by_mime_type, go_component_new_by_mime_type ()
-
go_component_new_from_uri, go_component_new_from_uri () +
go_component_new_from_uri, go_component_new_from_uri ()
-
go_component_render, go_component_render () +
go_component_render, go_component_render ()
-
go_component_sax_push_parser, go_component_sax_push_parser () +
go_component_sax_push_parser, go_component_sax_push_parser ()
-
go_component_set_command_context, go_component_set_command_context () +
go_component_set_command_context, go_component_set_command_context ()
-
go_component_set_data, go_component_set_data () +
go_component_set_data, go_component_set_data ()
-
go_component_set_default_command_context, go_component_set_default_command_context () +
go_component_set_default_command_context, go_component_set_default_command_context ()
-
go_component_set_default_size, go_component_set_default_size () +
go_component_set_default_size, go_component_set_default_size ()
-
go_component_set_font, go_component_set_font () +
go_component_set_font, go_component_set_font ()
-
go_component_set_inline, go_component_set_inline () +
go_component_set_inline, go_component_set_inline ()
-
go_component_set_size, go_component_set_size () +
go_component_set_size, go_component_set_size ()
-
go_component_set_use_font_from_app, go_component_set_use_font_from_app () +
go_component_set_use_font_from_app, go_component_set_use_font_from_app ()
-
go_component_set_window, go_component_set_window () +
go_component_set_window, go_component_set_window ()
-
go_component_stop_editing, go_component_stop_editing () +
go_component_stop_editing, go_component_stop_editing ()
-
go_component_write_xml_sax, go_component_write_xml_sax () +
go_component_write_xml_sax, go_component_write_xml_sax ()
-
go_continued_fraction, go_continued_fraction () +
go_continued_fraction, go_continued_fraction ()
-
go_cospi, go_cospi () +
go_cospi, go_cospi ()
-
go_cospil, go_cospil () +
go_cospil, go_cospil ()
-
go_cotpi, go_cotpi () +
go_cotpi, go_cotpi ()
-
go_cotpil, go_cotpil () +
go_cotpil, go_cotpil ()
-
go_coupdaybs, go_coupdaybs () +
go_coupdaybs, go_coupdaybs ()
-
go_coupdays, go_coupdays () +
go_coupdays, go_coupdays ()
-
go_coupdaysnc, go_coupdaysnc () +
go_coupdaysnc, go_coupdaysnc ()
-
go_coup_cd, go_coup_cd () +
go_coup_cd, go_coup_cd ()
-
go_cspline_destroy, go_cspline_destroy () +
go_cspline_destroy, go_cspline_destroy ()
-
go_cspline_destroyl, go_cspline_destroyl () +
go_cspline_destroyl, go_cspline_destroyl ()
-
go_cspline_get_deriv, go_cspline_get_deriv () +
go_cspline_get_deriv, go_cspline_get_deriv ()
-
go_cspline_get_derivl, go_cspline_get_derivl () +
go_cspline_get_derivl, go_cspline_get_derivl ()
-
go_cspline_get_derivs, go_cspline_get_derivs () +
go_cspline_get_derivs, go_cspline_get_derivs ()
-
go_cspline_get_derivsl, go_cspline_get_derivsl () +
go_cspline_get_derivsl, go_cspline_get_derivsl ()
-
go_cspline_get_integrals, go_cspline_get_integrals () +
go_cspline_get_integrals, go_cspline_get_integrals ()
-
go_cspline_get_integralsl, go_cspline_get_integralsl () +
go_cspline_get_integralsl, go_cspline_get_integralsl ()
-
go_cspline_get_value, go_cspline_get_value () +
go_cspline_get_value, go_cspline_get_value ()
-
go_cspline_get_valuel, go_cspline_get_valuel () +
go_cspline_get_valuel, go_cspline_get_valuel ()
-
go_cspline_get_values, go_cspline_get_values () +
go_cspline_get_values, go_cspline_get_values ()
-
go_cspline_get_valuesl, go_cspline_get_valuesl () +
go_cspline_get_valuesl, go_cspline_get_valuesl ()
-
go_cspline_init, go_cspline_init () +
go_cspline_init, go_cspline_init ()
-
go_cspline_initl, go_cspline_initl () +
go_cspline_initl, go_cspline_initl ()
-
go_data_date_conv, go_data_date_conv () +
go_data_date_conv, go_data_date_conv ()
-
go_data_dup, go_data_dup () +
go_data_dup, go_data_dup ()
-
go_data_emit_changed, go_data_emit_changed () +
go_data_emit_changed, go_data_emit_changed ()
-
go_data_eq, go_data_eq () +
go_data_eq, go_data_eq ()
-
go_data_get_bounds, go_data_get_bounds () +
go_data_get_bounds, go_data_get_bounds ()
-
go_data_get_matrix_markup, go_data_get_matrix_markup () +
go_data_get_matrix_markup, go_data_get_matrix_markup ()
-
go_data_get_matrix_size, go_data_get_matrix_size () +
go_data_get_matrix_size, go_data_get_matrix_size ()
-
go_data_get_matrix_string, go_data_get_matrix_string () +
go_data_get_matrix_string, go_data_get_matrix_string ()
-
go_data_get_matrix_value, go_data_get_matrix_value () +
go_data_get_matrix_value, go_data_get_matrix_value ()
-
go_data_get_n_dimensions, go_data_get_n_dimensions () +
go_data_get_n_dimensions, go_data_get_n_dimensions ()
-
go_data_get_n_values, go_data_get_n_values () +
go_data_get_n_values, go_data_get_n_values ()
-
go_data_get_scalar_markup, go_data_get_scalar_markup () +
go_data_get_scalar_markup, go_data_get_scalar_markup ()
-
go_data_get_scalar_string, go_data_get_scalar_string () +
go_data_get_scalar_string, go_data_get_scalar_string ()
-
go_data_get_scalar_value, go_data_get_scalar_value () +
go_data_get_scalar_value, go_data_get_scalar_value ()
-
go_data_get_values, go_data_get_values () +
go_data_get_values, go_data_get_values ()
-
go_data_get_vector_markup, go_data_get_vector_markup () +
go_data_get_vector_markup, go_data_get_vector_markup ()
-
go_data_get_vector_size, go_data_get_vector_size () +
go_data_get_vector_size, go_data_get_vector_size ()
-
go_data_get_vector_string, go_data_get_vector_string () +
go_data_get_vector_string, go_data_get_vector_string ()
-
go_data_get_vector_value, go_data_get_vector_value () +
go_data_get_vector_value, go_data_get_vector_value ()
-
go_data_has_value, go_data_has_value () +
go_data_has_value, go_data_has_value ()
-
go_data_is_decreasing, go_data_is_decreasing () +
go_data_is_decreasing, go_data_is_decreasing ()
-
go_data_is_increasing, go_data_is_increasing () +
go_data_is_increasing, go_data_is_increasing ()
-
go_data_is_valid, go_data_is_valid () +
go_data_is_valid, go_data_is_valid ()
-
go_data_is_varying_uniformly, go_data_is_varying_uniformly () +
go_data_is_varying_uniformly, go_data_is_varying_uniformly ()
-
go_data_matrix_get_columns, go_data_matrix_get_columns () +
go_data_matrix_get_columns, go_data_matrix_get_columns ()
-
go_data_matrix_get_markup, go_data_matrix_get_markup () +
go_data_matrix_get_markup, go_data_matrix_get_markup ()
-
go_data_matrix_get_minmax, go_data_matrix_get_minmax () +
go_data_matrix_get_minmax, go_data_matrix_get_minmax ()
-
go_data_matrix_get_rows, go_data_matrix_get_rows () +
go_data_matrix_get_rows, go_data_matrix_get_rows ()
-
go_data_matrix_get_size, go_data_matrix_get_size () +
go_data_matrix_get_size, go_data_matrix_get_size ()
-
go_data_matrix_get_str, go_data_matrix_get_str () +
go_data_matrix_get_str, go_data_matrix_get_str ()
-
go_data_matrix_get_value, go_data_matrix_get_value () +
go_data_matrix_get_value, go_data_matrix_get_value ()
-
go_data_matrix_get_values, go_data_matrix_get_values () +
go_data_matrix_get_values, go_data_matrix_get_values ()
-
go_data_matrix_val_new, go_data_matrix_val_new () +
go_data_matrix_val_new, go_data_matrix_val_new ()
-
go_data_preferred_fmt, go_data_preferred_fmt () +
go_data_preferred_fmt, go_data_preferred_fmt ()
-
go_data_scalar_get_markup, go_data_scalar_get_markup () +
go_data_scalar_get_markup, go_data_scalar_get_markup ()
-
go_data_scalar_get_str, go_data_scalar_get_str () +
go_data_scalar_get_str, go_data_scalar_get_str ()
-
go_data_scalar_get_value, go_data_scalar_get_value () +
go_data_scalar_get_value, go_data_scalar_get_value ()
-
go_data_scalar_str_new, go_data_scalar_str_new () +
go_data_scalar_str_new, go_data_scalar_str_new ()
-
go_data_scalar_str_new_copy, go_data_scalar_str_new_copy () +
go_data_scalar_str_new_copy, go_data_scalar_str_new_copy ()
-
go_data_scalar_str_set_str, go_data_scalar_str_set_str () +
go_data_scalar_str_set_str, go_data_scalar_str_set_str ()
-
go_data_scalar_val_new, go_data_scalar_val_new () +
go_data_scalar_val_new, go_data_scalar_val_new ()
-
go_data_serialize, go_data_serialize () +
go_data_serialize, go_data_serialize ()
-
go_data_unserialize, go_data_unserialize () +
go_data_unserialize, go_data_unserialize ()
-
go_data_vector_decreasing, go_data_vector_decreasing () +
go_data_vector_decreasing, go_data_vector_decreasing ()
-
go_data_vector_get_len, go_data_vector_get_len () +
go_data_vector_get_len, go_data_vector_get_len ()
-
go_data_vector_get_markup, go_data_vector_get_markup () +
go_data_vector_get_markup, go_data_vector_get_markup ()
-
go_data_vector_get_minmax, go_data_vector_get_minmax () +
go_data_vector_get_minmax, go_data_vector_get_minmax ()
-
go_data_vector_get_str, go_data_vector_get_str () +
go_data_vector_get_str, go_data_vector_get_str ()
-
go_data_vector_get_value, go_data_vector_get_value () +
go_data_vector_get_value, go_data_vector_get_value ()
-
go_data_vector_get_values, go_data_vector_get_values () +
go_data_vector_get_values, go_data_vector_get_values ()
-
go_data_vector_increasing, go_data_vector_increasing () +
go_data_vector_increasing, go_data_vector_increasing ()
-
go_data_vector_str_new, go_data_vector_str_new () +
go_data_vector_str_new, go_data_vector_str_new ()
-
go_data_vector_str_new_copy, go_data_vector_str_new_copy () +
go_data_vector_str_new_copy, go_data_vector_str_new_copy ()
-
go_data_vector_str_set_translate_func, go_data_vector_str_set_translate_func () +
go_data_vector_str_set_translate_func, go_data_vector_str_set_translate_func ()
-
go_data_vector_str_set_translation_domain, go_data_vector_str_set_translation_domain () +
go_data_vector_str_set_translation_domain, go_data_vector_str_set_translation_domain ()
-
go_data_vector_val_new, go_data_vector_val_new () +
go_data_vector_val_new, go_data_vector_val_new ()
-
go_data_vector_val_new_copy, go_data_vector_val_new_copy () +
go_data_vector_val_new_copy, go_data_vector_val_new_copy ()
-
go_data_vector_vary_uniformly, go_data_vector_vary_uniformly () +
go_data_vector_vary_uniformly, go_data_vector_vary_uniformly ()
-
go_date_convention_base, go_date_convention_base () +
go_date_convention_base, go_date_convention_base ()
-
go_date_conv_equal, go_date_conv_equal () +
go_date_conv_equal, go_date_conv_equal ()
-
go_date_conv_from_str, go_date_conv_from_str () +
go_date_conv_from_str, go_date_conv_from_str ()
-
go_date_conv_translate, go_date_conv_translate () +
go_date_conv_translate, go_date_conv_translate ()
-
go_date_days_between_basis, go_date_days_between_basis () +
go_date_days_between_basis, go_date_days_between_basis ()
-
go_date_g_months_between, go_date_g_months_between () +
go_date_g_months_between, go_date_g_months_between ()
-
go_date_g_to_serial, go_date_g_to_serial () +
go_date_g_to_serial, go_date_g_to_serial ()
-
go_date_g_years_between, go_date_g_years_between () +
go_date_g_years_between, go_date_g_years_between ()
-
go_date_month_name, go_date_month_name () +
go_date_month_name, go_date_month_name ()
-
go_date_serial_raw_to_seconds, go_date_serial_raw_to_seconds () +
go_date_serial_raw_to_seconds, go_date_serial_raw_to_seconds ()
-
go_date_serial_raw_to_serial, go_date_serial_raw_to_serial () +
go_date_serial_raw_to_serial, go_date_serial_raw_to_serial ()
-
go_date_serial_to_g, go_date_serial_to_g () +
go_date_serial_to_g, go_date_serial_to_g ()
-
go_date_serial_to_timet, go_date_serial_to_timet () +
go_date_serial_to_timet, go_date_serial_to_timet ()
-
go_date_timet_to_seconds, go_date_timet_to_seconds () +
go_date_timet_to_seconds, go_date_timet_to_seconds ()
-
go_date_timet_to_serial, go_date_timet_to_serial () +
go_date_timet_to_serial, go_date_timet_to_serial ()
-
go_date_timet_to_serial_raw, go_date_timet_to_serial_raw () +
go_date_timet_to_serial_raw, go_date_timet_to_serial_raw ()
-
go_date_weekday_name, go_date_weekday_name () +
go_date_weekday_name, go_date_weekday_name ()
-
go_date_weeknum, go_date_weeknum () +
go_date_weeknum, go_date_weeknum ()
-
go_debug_check_finalized, go_debug_check_finalized () +
go_debug_check_finalized, go_debug_check_finalized ()
-
go_debug_flag, go_debug_flag () +
go_debug_flag, go_debug_flag ()
-
go_destroy_password, go_destroy_password () +
go_destroy_password, go_destroy_password ()
-
go_direction_get_name, go_direction_get_name () +
go_direction_get_name, go_direction_get_name ()
-
go_direction_is_forward, go_direction_is_forward () +
go_direction_is_forward, go_direction_is_forward ()
-
go_direction_is_horizontal, go_direction_is_horizontal () +
go_direction_is_horizontal, go_direction_is_horizontal ()
-
go_dirname_from_uri, go_dirname_from_uri () +
go_dirname_from_uri, go_dirname_from_uri ()
-
go_distribution_get_cumulative, go_distribution_get_cumulative () +
go_distribution_get_cumulative, go_distribution_get_cumulative ()
-
go_distribution_get_cumulativel, go_distribution_get_cumulativel () +
go_distribution_get_cumulativel, go_distribution_get_cumulativel ()
-
go_distribution_get_cumulative_hazard, go_distribution_get_cumulative_hazard () +
go_distribution_get_cumulative_hazard, go_distribution_get_cumulative_hazard ()
-
go_distribution_get_cumulative_hazardl, go_distribution_get_cumulative_hazardl () +
go_distribution_get_cumulative_hazardl, go_distribution_get_cumulative_hazardl ()
-
go_distribution_get_density, go_distribution_get_density () +
go_distribution_get_density, go_distribution_get_density ()
-
go_distribution_get_densityl, go_distribution_get_densityl () +
go_distribution_get_densityl, go_distribution_get_densityl ()
-
go_distribution_get_distribution_name, go_distribution_get_distribution_name () +
go_distribution_get_distribution_name, go_distribution_get_distribution_name ()
-
go_distribution_get_distribution_type, go_distribution_get_distribution_type () +
go_distribution_get_distribution_type, go_distribution_get_distribution_type ()
-
go_distribution_get_hazard, go_distribution_get_hazard () +
go_distribution_get_hazard, go_distribution_get_hazard ()
-
go_distribution_get_hazardl, go_distribution_get_hazardl () +
go_distribution_get_hazardl, go_distribution_get_hazardl ()
-
go_distribution_get_inverse_survival, go_distribution_get_inverse_survival () +
go_distribution_get_inverse_survival, go_distribution_get_inverse_survival ()
-
go_distribution_get_inverse_survivall, go_distribution_get_inverse_survivall () +
go_distribution_get_inverse_survivall, go_distribution_get_inverse_survivall ()
-
go_distribution_get_ppf, go_distribution_get_ppf () +
go_distribution_get_ppf, go_distribution_get_ppf ()
-
go_distribution_get_ppfl, go_distribution_get_ppfl () +
go_distribution_get_ppfl, go_distribution_get_ppfl ()
-
go_distribution_get_survival, go_distribution_get_survival () +
go_distribution_get_survival, go_distribution_get_survival ()
-
go_distribution_get_survivall, go_distribution_get_survivall () +
go_distribution_get_survivall, go_distribution_get_survivall ()
-
go_distribution_new, go_distribution_new () +
go_distribution_new, go_distribution_new ()
-
go_distribution_scale, go_distribution_scale () +
go_distribution_scale, go_distribution_scale ()
-
go_distribution_type_from_string, go_distribution_type_from_string () +
go_distribution_type_from_string, go_distribution_type_from_string ()
-
go_distribution_type_to_string, go_distribution_type_to_string () +
go_distribution_type_to_string, go_distribution_type_to_string ()
-
go_doc_add_image, go_doc_add_image () +
go_doc_add_image, go_doc_add_image ()
-
go_doc_bump_state, go_doc_bump_state () +
go_doc_bump_state, go_doc_bump_state ()
-
go_doc_control_get_doc, go_doc_control_get_doc () +
go_doc_control_get_doc, go_doc_control_get_doc ()
-
go_doc_control_set_doc, go_doc_control_set_doc () +
go_doc_control_set_doc, go_doc_control_set_doc ()
-
go_doc_end_read, go_doc_end_read () +
go_doc_end_read, go_doc_end_read ()
-
go_doc_get_dirty_time, go_doc_get_dirty_time () +
go_doc_get_dirty_time, go_doc_get_dirty_time ()
-
go_doc_get_image, go_doc_get_image () +
go_doc_get_image, go_doc_get_image ()
-
go_doc_get_images, go_doc_get_images () +
go_doc_get_images, go_doc_get_images ()
-
go_doc_get_meta_data, go_doc_get_meta_data () +
go_doc_get_meta_data, go_doc_get_meta_data ()
-
go_doc_get_modtime, go_doc_get_modtime () +
go_doc_get_modtime, go_doc_get_modtime ()
-
go_doc_get_saved_state, go_doc_get_saved_state () +
go_doc_get_saved_state, go_doc_get_saved_state ()
-
go_doc_get_state, go_doc_get_state () +
go_doc_get_state, go_doc_get_state ()
-
go_doc_get_uri, go_doc_get_uri () +
go_doc_get_uri, go_doc_get_uri ()
-
go_doc_image_fetch, go_doc_image_fetch () +
go_doc_image_fetch, go_doc_image_fetch ()
-
go_doc_init_read, go_doc_init_read () +
go_doc_init_read, go_doc_init_read ()
-
go_doc_init_write, go_doc_init_write () +
go_doc_init_write, go_doc_init_write ()
-
go_doc_is_dirty, go_doc_is_dirty () +
go_doc_is_dirty, go_doc_is_dirty ()
-
go_doc_is_pristine, go_doc_is_pristine () +
go_doc_is_pristine, go_doc_is_pristine ()
-
go_doc_read, go_doc_read () +
go_doc_read, go_doc_read ()
-
go_doc_save_image, go_doc_save_image () +
go_doc_save_image, go_doc_save_image ()
-
go_doc_save_resource, go_doc_save_resource () +
go_doc_save_resource, go_doc_save_resource ()
-
go_doc_set_dirty, go_doc_set_dirty () +
go_doc_set_dirty, go_doc_set_dirty ()
-
go_doc_set_dirty_time, go_doc_set_dirty_time () +
go_doc_set_dirty_time, go_doc_set_dirty_time ()
-
go_doc_set_meta_data, go_doc_set_meta_data () +
go_doc_set_meta_data, go_doc_set_meta_data ()
-
go_doc_set_modtime, go_doc_set_modtime () +
go_doc_set_modtime, go_doc_set_modtime ()
-
go_doc_set_pristine, go_doc_set_pristine () +
go_doc_set_pristine, go_doc_set_pristine ()
-
go_doc_set_saved_state, go_doc_set_saved_state () +
go_doc_set_saved_state, go_doc_set_saved_state ()
-
go_doc_set_state, go_doc_set_state () +
go_doc_set_state, go_doc_set_state ()
-
go_doc_set_uri, go_doc_set_uri () +
go_doc_set_uri, go_doc_set_uri ()
-
go_doc_update_meta_data, go_doc_update_meta_data () +
go_doc_update_meta_data, go_doc_update_meta_data ()
-
go_doc_write, go_doc_write () +
go_doc_write, go_doc_write ()
-
go_dtoa, go_dtoa () +
go_dtoa, go_dtoa ()
-
go_editor_add_page, go_editor_add_page () +
go_editor_add_page, go_editor_add_page ()
-
go_editor_free, go_editor_free () +
go_editor_free, go_editor_free ()
-
go_editor_get_notebook, go_editor_get_notebook () +
go_editor_get_notebook, go_editor_get_notebook ()
-
go_editor_get_page, go_editor_get_page () +
go_editor_get_page, go_editor_get_page ()
-
go_editor_get_registered_widget, go_editor_get_registered_widget () +
go_editor_get_registered_widget, go_editor_get_registered_widget ()
-
go_editor_new, go_editor_new () +
go_editor_new, go_editor_new ()
-
go_editor_register_widget, go_editor_register_widget () +
go_editor_register_widget, go_editor_register_widget ()
-
go_editor_set_store_page, go_editor_set_store_page () +
go_editor_set_store_page, go_editor_set_store_page ()
-
go_editor_set_use_scrolled_window, go_editor_set_use_scrolled_window () +
go_editor_set_use_scrolled_window, go_editor_set_use_scrolled_window ()
-
go_emf_get_canvas, go_emf_get_canvas () +
go_emf_get_canvas, go_emf_get_canvas ()
-
go_emf_new_from_data, go_emf_new_from_data () +
go_emf_new_from_data, go_emf_new_from_data ()
-
go_emf_new_from_file, go_emf_new_from_file () +
go_emf_new_from_file, go_emf_new_from_file ()
-
GO_EMU_PER_IN, GO_EMU_PER_IN +
GO_EMU_PER_IN, GO_EMU_PER_IN
-
GO_EMU_TO_CM, GO_EMU_TO_CM() +
GO_EMU_TO_CM, GO_EMU_TO_CM()
-
GO_EMU_TO_IN, GO_EMU_TO_IN() +
GO_EMU_TO_IN, GO_EMU_TO_IN()
-
GO_EMU_TO_PT, GO_EMU_TO_PT() +
GO_EMU_TO_PT, GO_EMU_TO_PT()
-
GO_EMU_TO_UN, GO_EMU_TO_UN() +
GO_EMU_TO_UN, GO_EMU_TO_UN()
-
go_error_export, go_error_export () +
go_error_export, go_error_export ()
-
go_error_import, go_error_import () +
go_error_import, go_error_import ()
-
go_error_info_add_details, go_error_info_add_details () +
go_error_info_add_details, go_error_info_add_details ()
-
go_error_info_add_details_list, go_error_info_add_details_list () +
go_error_info_add_details_list, go_error_info_add_details_list ()
-
go_error_info_free, go_error_info_free () +
go_error_info_free, go_error_info_free ()
-
go_error_info_new_from_errno, go_error_info_new_from_errno () +
go_error_info_new_from_errno, go_error_info_new_from_errno ()
-
go_error_info_new_from_error_list, go_error_info_new_from_error_list () +
go_error_info_new_from_error_list, go_error_info_new_from_error_list ()
-
go_error_info_new_printf, go_error_info_new_printf () +
go_error_info_new_printf, go_error_info_new_printf ()
-
go_error_info_new_str, go_error_info_new_str () +
go_error_info_new_str, go_error_info_new_str ()
-
go_error_info_new_str_with_details, go_error_info_new_str_with_details () +
go_error_info_new_str_with_details, go_error_info_new_str_with_details ()
-
go_error_info_new_str_with_details_list, go_error_info_new_str_with_details_list () +
go_error_info_new_str_with_details_list, go_error_info_new_str_with_details_list ()
-
go_error_info_new_vprintf, go_error_info_new_vprintf () +
go_error_info_new_vprintf, go_error_info_new_vprintf ()
-
go_error_info_peek_details, go_error_info_peek_details () +
go_error_info_peek_details, go_error_info_peek_details ()
-
go_error_info_peek_message, go_error_info_peek_message () +
go_error_info_peek_message, go_error_info_peek_message ()
-
go_error_info_peek_severity, go_error_info_peek_severity () +
go_error_info_peek_severity, go_error_info_peek_severity ()
-
go_error_info_print, go_error_info_print () +
go_error_info_print, go_error_info_print ()
-
go_error_invalid, go_error_invalid () +
go_error_invalid, go_error_invalid ()
-
go_error_system, go_error_system () +
go_error_system, go_error_system ()
-
go_exponential_regression, go_exponential_regression () +
go_exponential_regression, go_exponential_regression ()
-
go_exponential_regressionl, go_exponential_regressionl () +
go_exponential_regressionl, go_exponential_regressionl ()
-
go_exponential_regression_as_log, go_exponential_regression_as_log () +
go_exponential_regression_as_log, go_exponential_regression_as_log ()
-
go_exponential_regression_as_logl, go_exponential_regression_as_logl () +
go_exponential_regression_as_logl, go_exponential_regression_as_logl ()
-
go_fake_ceil, go_fake_ceil () +
go_fake_ceil, go_fake_ceil ()
-
go_fake_ceill, go_fake_ceill () +
go_fake_ceill, go_fake_ceill ()
-
go_fake_floor, go_fake_floor () +
go_fake_floor, go_fake_floor ()
-
go_fake_floorl, go_fake_floorl () +
go_fake_floorl, go_fake_floorl ()
-
go_fake_round, go_fake_round () +
go_fake_round, go_fake_round ()
-
go_fake_roundl, go_fake_roundl () +
go_fake_roundl, go_fake_roundl ()
-
go_fake_trunc, go_fake_trunc () +
go_fake_trunc, go_fake_trunc ()
-
go_fake_truncl, go_fake_truncl () +
go_fake_truncl, go_fake_truncl ()
-
go_filename_from_uri, go_filename_from_uri () +
go_filename_from_uri, go_filename_from_uri ()
-
go_filename_simplify, go_filename_simplify () +
go_filename_simplify, go_filename_simplify ()
-
go_filename_to_uri, go_filename_to_uri () +
go_filename_to_uri, go_filename_to_uri ()
-
go_file_access, go_file_access () +
go_file_access, go_file_access ()
-
go_file_create, go_file_create () +
go_file_create, go_file_create ()
-
go_file_get_date_accessed, go_file_get_date_accessed () +
go_file_get_date_accessed, go_file_get_date_accessed ()
-
go_file_get_date_changed, go_file_get_date_changed () +
go_file_get_date_changed, go_file_get_date_changed ()
-
go_file_get_date_modified, go_file_get_date_modified () +
go_file_get_date_modified, go_file_get_date_modified ()
-
go_file_get_group_name, go_file_get_group_name () +
go_file_get_group_name, go_file_get_group_name ()
-
go_file_get_modtime, go_file_get_modtime () +
go_file_get_modtime, go_file_get_modtime ()
-
go_file_get_owner_name, go_file_get_owner_name () +
go_file_get_owner_name, go_file_get_owner_name ()
-
go_file_open, go_file_open () +
go_file_open, go_file_open ()
-
go_file_opener_can_probe, go_file_opener_can_probe () +
go_file_opener_can_probe, go_file_opener_can_probe ()
-
go_file_opener_for_id, go_file_opener_for_id () +
go_file_opener_for_id, go_file_opener_for_id ()
-
go_file_opener_get_description, go_file_opener_get_description () +
go_file_opener_get_description, go_file_opener_get_description ()
-
go_file_opener_get_id, go_file_opener_get_id () +
go_file_opener_get_id, go_file_opener_get_id ()
-
go_file_opener_get_mimes, go_file_opener_get_mimes () +
go_file_opener_get_mimes, go_file_opener_get_mimes ()
-
go_file_opener_get_suffixes, go_file_opener_get_suffixes () +
go_file_opener_get_suffixes, go_file_opener_get_suffixes ()
-
go_file_opener_is_encoding_dependent, go_file_opener_is_encoding_dependent () +
go_file_opener_is_encoding_dependent, go_file_opener_is_encoding_dependent ()
-
go_file_opener_new, go_file_opener_new () +
go_file_opener_new, go_file_opener_new ()
-
go_file_opener_new_with_enc, go_file_opener_new_with_enc () +
go_file_opener_new_with_enc, go_file_opener_new_with_enc ()
-
go_file_opener_open, go_file_opener_open () +
go_file_opener_open, go_file_opener_open ()
-
go_file_opener_probe, go_file_opener_probe () +
go_file_opener_probe, go_file_opener_probe ()
-
go_file_opener_register, go_file_opener_register () +
go_file_opener_register, go_file_opener_register ()
-
go_file_opener_unregister, go_file_opener_unregister () +
go_file_opener_unregister, go_file_opener_unregister ()
-
go_file_saver_for_file_name, go_file_saver_for_file_name () +
go_file_saver_for_file_name, go_file_saver_for_file_name ()
-
go_file_saver_for_id, go_file_saver_for_id () +
go_file_saver_for_id, go_file_saver_for_id ()
-
go_file_saver_for_mime_type, go_file_saver_for_mime_type () +
go_file_saver_for_mime_type, go_file_saver_for_mime_type ()
-
go_file_saver_get_default, go_file_saver_get_default () +
go_file_saver_get_default, go_file_saver_get_default ()
-
go_file_saver_get_description, go_file_saver_get_description () +
go_file_saver_get_description, go_file_saver_get_description ()
-
go_file_saver_get_extension, go_file_saver_get_extension () +
go_file_saver_get_extension, go_file_saver_get_extension ()
-
go_file_saver_get_format_level, go_file_saver_get_format_level () +
go_file_saver_get_format_level, go_file_saver_get_format_level ()
-
go_file_saver_get_id, go_file_saver_get_id () +
go_file_saver_get_id, go_file_saver_get_id ()
-
go_file_saver_get_mime_type, go_file_saver_get_mime_type () +
go_file_saver_get_mime_type, go_file_saver_get_mime_type ()
-
go_file_saver_get_save_scope, go_file_saver_get_save_scope () +
go_file_saver_get_save_scope, go_file_saver_get_save_scope ()
-
go_file_saver_new, go_file_saver_new () +
go_file_saver_new, go_file_saver_new ()
-
go_file_saver_register, go_file_saver_register () +
go_file_saver_register, go_file_saver_register ()
-
go_file_saver_register_as_default, go_file_saver_register_as_default () +
go_file_saver_register_as_default, go_file_saver_register_as_default ()
-
go_file_saver_save, go_file_saver_save () +
go_file_saver_save, go_file_saver_save ()
-
go_file_saver_set_export_options, go_file_saver_set_export_options () +
go_file_saver_set_export_options, go_file_saver_set_export_options ()
-
go_file_saver_set_overwrite_files, go_file_saver_set_overwrite_files () +
go_file_saver_set_overwrite_files, go_file_saver_set_overwrite_files ()
-
go_file_saver_set_save_scope, go_file_saver_set_save_scope () +
go_file_saver_set_save_scope, go_file_saver_set_save_scope ()
-
go_file_saver_unregister, go_file_saver_unregister () +
go_file_saver_unregister, go_file_saver_unregister ()
-
go_file_split_urls, go_file_split_urls () +
go_file_split_urls, go_file_split_urls ()
-
go_finite, go_finite () +
go_finite, go_finite ()
-
go_finitel, go_finitel () +
go_finitel, go_finitel ()
-
go_fonts_list_families, go_fonts_list_families () +
go_fonts_list_families, go_fonts_list_families ()
-
go_fonts_list_sizes, go_fonts_list_sizes () +
go_fonts_list_sizes, go_fonts_list_sizes ()
-
go_font_as_str, go_font_as_str () +
go_font_as_str, go_font_as_str ()
-
go_font_cache_register, go_font_cache_register () +
go_font_cache_register, go_font_cache_register ()
-
go_font_cache_unregister, go_font_cache_unregister () +
go_font_cache_unregister, go_font_cache_unregister ()
-
go_font_eq, go_font_eq () +
go_font_eq, go_font_eq ()
-
go_font_metrics_free, go_font_metrics_free () +
go_font_metrics_free, go_font_metrics_free ()
-
go_font_metrics_new, go_font_metrics_new () +
go_font_metrics_new, go_font_metrics_new ()
-
go_font_new_by_desc, go_font_new_by_desc () +
go_font_new_by_desc, go_font_new_by_desc ()
-
go_font_new_by_index, go_font_new_by_index () +
go_font_new_by_index, go_font_new_by_index ()
-
go_font_new_by_name, go_font_new_by_name () +
go_font_new_by_name, go_font_new_by_name ()
-
go_font_ref, go_font_ref () +
go_font_ref, go_font_ref ()
-
go_font_sel_editable_enters, go_font_sel_editable_enters () +
go_font_sel_editable_enters, go_font_sel_editable_enters ()
-
go_font_sel_get_color, go_font_sel_get_color () +
go_font_sel_get_color, go_font_sel_get_color ()
-
go_font_sel_get_font, go_font_sel_get_font () +
go_font_sel_get_font, go_font_sel_get_font ()
-
go_font_sel_new, go_font_sel_new () +
go_font_sel_new, go_font_sel_new ()
-
go_font_sel_set_color, go_font_sel_set_color () +
go_font_sel_set_color, go_font_sel_set_color ()
-
go_font_sel_set_font, go_font_sel_set_font () +
go_font_sel_set_font, go_font_sel_set_font ()
-
go_font_sel_set_sample_text, go_font_sel_set_sample_text () +
go_font_sel_set_sample_text, go_font_sel_set_sample_text ()
-
go_font_sel_set_script, go_font_sel_set_script () +
go_font_sel_set_script, go_font_sel_set_script ()
-
go_font_unref, go_font_unref () +
go_font_unref, go_font_unref ()
-
go_format_allow_ee_markup, go_format_allow_ee_markup () +
go_format_allow_ee_markup, go_format_allow_ee_markup ()
-
go_format_allow_pi_slash, go_format_allow_pi_slash () +
go_format_allow_pi_slash, go_format_allow_pi_slash ()
-
go_format_allow_si, go_format_allow_si () +
go_format_allow_si, go_format_allow_si ()
-
go_format_as_XL, go_format_as_XL () +
go_format_as_XL, go_format_as_XL ()
-
go_format_dec_precision, go_format_dec_precision () +
go_format_dec_precision, go_format_dec_precision ()
-
go_format_default_accounting, go_format_default_accounting () +
go_format_default_accounting, go_format_default_accounting ()
-
go_format_default_date, go_format_default_date () +
go_format_default_date, go_format_default_date ()
-
go_format_default_date_time, go_format_default_date_time () +
go_format_default_date_time, go_format_default_date_time ()
-
go_format_default_money, go_format_default_money () +
go_format_default_money, go_format_default_money ()
-
go_format_default_percentage, go_format_default_percentage () +
go_format_default_percentage, go_format_default_percentage ()
-
go_format_default_time, go_format_default_time () +
go_format_default_time, go_format_default_time ()
-
go_format_details_finalize, go_format_details_finalize () +
go_format_details_finalize, go_format_details_finalize ()
-
go_format_details_free, go_format_details_free () +
go_format_details_free, go_format_details_free ()
-
go_format_details_init, go_format_details_init () +
go_format_details_init, go_format_details_init ()
-
go_format_details_new, go_format_details_new () +
go_format_details_new, go_format_details_new ()
-
go_format_empty, go_format_empty () +
go_format_empty, go_format_empty ()
-
go_format_eq, go_format_eq () +
go_format_eq, go_format_eq ()
-
go_format_foreach, go_format_foreach () +
go_format_foreach, go_format_foreach ()
-
go_format_general, go_format_general () +
go_format_general, go_format_general ()
-
go_format_generate_number_str, go_format_generate_number_str () +
go_format_generate_number_str, go_format_generate_number_str ()
-
go_format_generate_str, go_format_generate_str () +
go_format_generate_str, go_format_generate_str ()
-
go_format_get_details, go_format_get_details () +
go_format_get_details, go_format_get_details ()
-
go_format_get_family, go_format_get_family () +
go_format_get_family, go_format_get_family ()
-
go_format_get_magic, go_format_get_magic () +
go_format_get_magic, go_format_get_magic ()
-
go_format_get_markup, go_format_get_markup () +
go_format_get_markup, go_format_get_markup ()
-
go_format_has_day, go_format_has_day () +
go_format_has_day, go_format_has_day ()
-
go_format_has_hour, go_format_has_hour () +
go_format_has_hour, go_format_has_hour ()
-
go_format_has_minute, go_format_has_minute () +
go_format_has_minute, go_format_has_minute ()
-
go_format_has_month, go_format_has_month () +
go_format_has_month, go_format_has_month ()
-
go_format_has_year, go_format_has_year () +
go_format_has_year, go_format_has_year ()
-
go_format_inc_precision, go_format_inc_precision () +
go_format_inc_precision, go_format_inc_precision ()
-
go_format_is_date, go_format_is_date () +
go_format_is_date, go_format_is_date ()
-
go_format_is_general, go_format_is_general () +
go_format_is_general, go_format_is_general ()
-
go_format_is_invalid, go_format_is_invalid () +
go_format_is_invalid, go_format_is_invalid ()
-
go_format_is_markup, go_format_is_markup () +
go_format_is_markup, go_format_is_markup ()
-
go_format_is_simple, go_format_is_simple () +
go_format_is_simple, go_format_is_simple ()
-
go_format_is_text, go_format_is_text () +
go_format_is_text, go_format_is_text ()
-
go_format_is_time, go_format_is_time () +
go_format_is_time, go_format_is_time ()
-
go_format_is_var_width, go_format_is_var_width () +
go_format_is_var_width, go_format_is_var_width ()
-
go_format_locale_currency, go_format_locale_currency () +
go_format_locale_currency, go_format_locale_currency ()
-
go_format_measure_pango, go_format_measure_pango () +
go_format_measure_pango, go_format_measure_pango ()
-
go_format_measure_strlen, go_format_measure_strlen () +
go_format_measure_strlen, go_format_measure_strlen ()
-
go_format_measure_zero, go_format_measure_zero () +
go_format_measure_zero, go_format_measure_zero ()
-
go_format_month_before_day, go_format_month_before_day () +
go_format_month_before_day, go_format_month_before_day ()
-
go_format_new_from_XL, go_format_new_from_XL () +
go_format_new_from_XL, go_format_new_from_XL ()
-
go_format_new_magic, go_format_new_magic () +
go_format_new_magic, go_format_new_magic ()
-
go_format_new_markup, go_format_new_markup () +
go_format_new_markup, go_format_new_markup ()
-
go_format_odf_style_map, go_format_odf_style_map () +
go_format_odf_style_map, go_format_odf_style_map ()
-
go_format_output_to_odf, go_format_output_to_odf () +
go_format_output_to_odf, go_format_output_to_odf ()
-
go_format_palette_color_of_index, go_format_palette_color_of_index () +
go_format_palette_color_of_index, go_format_palette_color_of_index ()
-
go_format_palette_index_from_color, go_format_palette_index_from_color () +
go_format_palette_index_from_color, go_format_palette_index_from_color ()
-
go_format_palette_name_of_index, go_format_palette_name_of_index () +
go_format_palette_name_of_index, go_format_palette_name_of_index ()
-
go_format_ref, go_format_ref () +
go_format_ref, go_format_ref ()
-
go_format_sel_editable_enters, go_format_sel_editable_enters () +
go_format_sel_editable_enters, go_format_sel_editable_enters ()
-
go_format_sel_format_classification, go_format_sel_format_classification () +
go_format_sel_format_classification, go_format_sel_format_classification ()
-
go_format_sel_get_dateconv, go_format_sel_get_dateconv () +
go_format_sel_get_dateconv, go_format_sel_get_dateconv ()
-
go_format_sel_get_fmt, go_format_sel_get_fmt () +
go_format_sel_get_fmt, go_format_sel_get_fmt ()
-
go_format_sel_hide_preview, go_format_sel_hide_preview () +
go_format_sel_hide_preview, go_format_sel_hide_preview ()
-
go_format_sel_new, go_format_sel_new () +
go_format_sel_new, go_format_sel_new ()
-
go_format_sel_new_full, go_format_sel_new_full () +
go_format_sel_new_full, go_format_sel_new_full ()
-
go_format_sel_set_dateconv, go_format_sel_set_dateconv () +
go_format_sel_set_dateconv, go_format_sel_set_dateconv ()
-
go_format_sel_set_focus, go_format_sel_set_focus () +
go_format_sel_set_focus, go_format_sel_set_focus ()
-
go_format_sel_set_locale, go_format_sel_set_locale () +
go_format_sel_set_locale, go_format_sel_set_locale ()
-
go_format_sel_set_style_format, go_format_sel_set_style_format () +
go_format_sel_set_style_format, go_format_sel_set_style_format ()
-
go_format_sel_show_preview, go_format_sel_show_preview () +
go_format_sel_show_preview, go_format_sel_show_preview ()
-
go_format_specialize, go_format_specialize () +
go_format_specialize, go_format_specialize ()
-
go_format_specializel, go_format_specializel () +
go_format_specializel, go_format_specializel ()
-
go_format_str_delocalize, go_format_str_delocalize () +
go_format_str_delocalize, go_format_str_delocalize ()
-
go_format_str_localize, go_format_str_localize () +
go_format_str_localize, go_format_str_localize ()
-
go_format_toggle_1000sep, go_format_toggle_1000sep () +
go_format_toggle_1000sep, go_format_toggle_1000sep ()
-
go_format_unref, go_format_unref () +
go_format_unref, go_format_unref ()
-
go_format_value, go_format_value () +
go_format_value, go_format_value ()
-
go_format_valuel, go_format_valuel () +
go_format_valuel, go_format_valuel ()
-
go_format_value_gstring, go_format_value_gstring () +
go_format_value_gstring, go_format_value_gstring ()
-
go_format_value_gstringl, go_format_value_gstringl () +
go_format_value_gstringl, go_format_value_gstringl ()
-
go_fourier_fft, go_fourier_fft () +
go_fourier_fft, go_fourier_fft ()
-
go_fourier_fftl, go_fourier_fftl () +
go_fourier_fftl, go_fourier_fftl ()
-
GO_F_OK, GO_F_OK +
GO_F_OK, GO_F_OK
-
go_geometry_AABR_add, go_geometry_AABR_add () +
go_geometry_AABR_add, go_geometry_AABR_add ()
-
GO_GEOMETRY_ANGLE_TOLERANCE, GO_GEOMETRY_ANGLE_TOLERANCE +
GO_GEOMETRY_ANGLE_TOLERANCE, GO_GEOMETRY_ANGLE_TOLERANCE
-
go_geometry_calc_label_anchor, go_geometry_calc_label_anchor () +
go_geometry_calc_label_anchor, go_geometry_calc_label_anchor ()
-
go_geometry_calc_label_position, go_geometry_calc_label_position () +
go_geometry_calc_label_position, go_geometry_calc_label_position ()
-
go_geometry_cartesian_to_polar, go_geometry_cartesian_to_polar () +
go_geometry_cartesian_to_polar, go_geometry_cartesian_to_polar ()
-
go_geometry_get_rotation_type, go_geometry_get_rotation_type () +
go_geometry_get_rotation_type, go_geometry_get_rotation_type ()
-
go_geometry_OBR_to_AABR, go_geometry_OBR_to_AABR () +
go_geometry_OBR_to_AABR, go_geometry_OBR_to_AABR ()
-
go_geometry_point_to_segment, go_geometry_point_to_segment () +
go_geometry_point_to_segment, go_geometry_point_to_segment ()
-
go_geometry_test_OBR_overlap, go_geometry_test_OBR_overlap () +
go_geometry_test_OBR_overlap, go_geometry_test_OBR_overlap ()
-
go_get_file_openers, go_get_file_openers () +
go_get_file_openers, go_get_file_openers ()
-
go_get_file_permissions, go_get_file_permissions () +
go_get_file_permissions, go_get_file_permissions ()
-
go_get_file_savers, go_get_file_savers () +
go_get_file_savers, go_get_file_savers ()
-
go_get_mime_type, go_get_mime_type () +
go_get_mime_type, go_get_mime_type ()
-
go_get_mime_type_for_data, go_get_mime_type_for_data () +
go_get_mime_type_for_data, go_get_mime_type_for_data ()
-
go_get_real_name, go_get_real_name () +
go_get_real_name, go_get_real_name ()
-
go_gradient_dir_as_str, go_gradient_dir_as_str () +
go_gradient_dir_as_str, go_gradient_dir_as_str ()
-
go_gradient_dir_from_str, go_gradient_dir_from_str () +
go_gradient_dir_from_str, go_gradient_dir_from_str ()
-
go_graph_widget_get_chart, go_graph_widget_get_chart () +
go_graph_widget_get_chart, go_graph_widget_get_chart ()
-
go_graph_widget_get_graph, go_graph_widget_get_graph () +
go_graph_widget_get_graph, go_graph_widget_get_graph ()
-
go_graph_widget_get_renderer, go_graph_widget_get_renderer () +
go_graph_widget_get_renderer, go_graph_widget_get_renderer ()
-
go_graph_widget_new, go_graph_widget_new () +
go_graph_widget_new, go_graph_widget_new ()
-
go_graph_widget_set_size_mode, go_graph_widget_set_size_mode () +
go_graph_widget_set_size_mode, go_graph_widget_set_size_mode ()
-
go_guess_encoding, go_guess_encoding () +
go_guess_encoding, go_guess_encoding ()
-
go_hash_keys, go_hash_keys () +
go_hash_keys, go_hash_keys ()
-
go_image_differ, go_image_differ () +
go_image_differ, go_image_differ ()
-
go_image_draw, go_image_draw () +
go_image_draw, go_image_draw ()
-
go_image_format_info_get_type, go_image_format_info_get_type () +
go_image_format_info_get_type, go_image_format_info_get_type ()
-
go_image_format_to_mime, go_image_format_to_mime () +
go_image_format_to_mime, go_image_format_to_mime ()
-
go_image_get_data, go_image_get_data () +
go_image_get_data, go_image_get_data ()
-
go_image_get_default_dpi, go_image_get_default_dpi () +
go_image_get_default_dpi, go_image_get_default_dpi ()
-
go_image_get_formats_with_pixbuf_saver, go_image_get_formats_with_pixbuf_saver () +
go_image_get_formats_with_pixbuf_saver, go_image_get_formats_with_pixbuf_saver ()
-
go_image_get_format_from_name, go_image_get_format_from_name () +
go_image_get_format_from_name, go_image_get_format_from_name ()
-
go_image_get_format_info, go_image_get_format_info () +
go_image_get_format_info, go_image_get_format_info ()
-
go_image_get_height, go_image_get_height () +
go_image_get_height, go_image_get_height ()
-
go_image_get_info, go_image_get_info () +
go_image_get_info, go_image_get_info ()
-
go_image_get_name, go_image_get_name () +
go_image_get_name, go_image_get_name ()
-
go_image_get_pixbuf, go_image_get_pixbuf () +
go_image_get_pixbuf, go_image_get_pixbuf ()
-
go_image_get_scaled_pixbuf, go_image_get_scaled_pixbuf () +
go_image_get_scaled_pixbuf, go_image_get_scaled_pixbuf ()
-
go_image_get_thumbnail, go_image_get_thumbnail () +
go_image_get_thumbnail, go_image_get_thumbnail ()
-
go_image_get_width, go_image_get_width () +
go_image_get_width, go_image_get_width ()
-
go_image_load_attrs, go_image_load_attrs () +
go_image_load_attrs, go_image_load_attrs ()
-
go_image_load_data, go_image_load_data () +
go_image_load_data, go_image_load_data ()
-
go_image_new_for_format, go_image_new_for_format () +
go_image_new_for_format, go_image_new_for_format ()
-
go_image_new_from_data, go_image_new_from_data () +
go_image_new_from_data, go_image_new_from_data ()
-
go_image_new_from_file, go_image_new_from_file () +
go_image_new_from_file, go_image_new_from_file ()
-
go_image_save, go_image_save () +
go_image_save, go_image_save ()
-
go_image_set_default_dpi, go_image_set_default_dpi () +
go_image_set_default_dpi, go_image_set_default_dpi ()
-
go_image_set_name, go_image_set_name () +
go_image_set_name, go_image_set_name ()
-
go_image_type_for_format, go_image_type_for_format () +
go_image_type_for_format, go_image_type_for_format ()
-
GO_INIT_RET_ERROR_INFO, GO_INIT_RET_ERROR_INFO() +
GO_INIT_RET_ERROR_INFO, GO_INIT_RET_ERROR_INFO()
-
GO_IN_TO_CM, GO_IN_TO_CM() +
GO_IN_TO_CM, GO_IN_TO_CM()
-
GO_IN_TO_EMU, GO_IN_TO_EMU() +
GO_IN_TO_EMU, GO_IN_TO_EMU()
-
GO_IN_TO_PT, GO_IN_TO_PT() +
GO_IN_TO_PT, GO_IN_TO_PT()
-
GO_IN_TO_UN, GO_IN_TO_UN() +
GO_IN_TO_UN, GO_IN_TO_UN()
-
go_io_context_new, go_io_context_new () +
go_io_context_new, go_io_context_new ()
-
go_io_context_processing_file, go_io_context_processing_file () +
go_io_context_processing_file, go_io_context_processing_file ()
-
go_io_context_set_num_files, go_io_context_set_num_files () +
go_io_context_set_num_files, go_io_context_set_num_files ()
-
go_io_count_progress_set, go_io_count_progress_set () +
go_io_count_progress_set, go_io_count_progress_set ()
-
go_io_count_progress_update, go_io_count_progress_update () +
go_io_count_progress_update, go_io_count_progress_update ()
-
go_io_error_clear, go_io_error_clear () +
go_io_error_clear, go_io_error_clear ()
-
go_io_error_display, go_io_error_display () +
go_io_error_display, go_io_error_display ()
-
go_io_error_info_set, go_io_error_info_set () +
go_io_error_info_set, go_io_error_info_set ()
-
go_io_error_occurred, go_io_error_occurred () +
go_io_error_occurred, go_io_error_occurred ()
-
go_io_error_push, go_io_error_push () +
go_io_error_push, go_io_error_push ()
-
go_io_error_string, go_io_error_string () +
go_io_error_string, go_io_error_string ()
-
go_io_error_unknown, go_io_error_unknown () +
go_io_error_unknown, go_io_error_unknown ()
-
go_io_progress_message, go_io_progress_message () +
go_io_progress_message, go_io_progress_message ()
-
go_io_progress_range_pop, go_io_progress_range_pop () +
go_io_progress_range_pop, go_io_progress_range_pop ()
-
go_io_progress_range_push, go_io_progress_range_push () +
go_io_progress_range_push, go_io_progress_range_push ()
-
go_io_progress_unset, go_io_progress_unset () +
go_io_progress_unset, go_io_progress_unset ()
-
go_io_progress_update, go_io_progress_update () +
go_io_progress_update, go_io_progress_update ()
-
go_io_value_progress_set, go_io_value_progress_set () +
go_io_value_progress_set, go_io_value_progress_set ()
-
go_io_value_progress_update, go_io_value_progress_update () +
go_io_value_progress_update, go_io_value_progress_update ()
-
go_io_warning, go_io_warning () +
go_io_warning, go_io_warning ()
-
go_io_warning_occurred, go_io_warning_occurred () +
go_io_warning_occurred, go_io_warning_occurred ()
-
go_io_warning_unknown_font, go_io_warning_unknown_font () +
go_io_warning_unknown_font, go_io_warning_unknown_font ()
-
go_io_warning_unknown_function, go_io_warning_unknown_function () +
go_io_warning_unknown_function, go_io_warning_unknown_function ()
-
go_io_warning_unsupported_feature, go_io_warning_unsupported_feature () +
go_io_warning_unsupported_feature, go_io_warning_unsupported_feature ()
-
go_io_warning_varargs, go_io_warning_varargs () +
go_io_warning_varargs, go_io_warning_varargs ()
-
go_linear_regression, go_linear_regression () +
go_linear_regression, go_linear_regression ()
-
go_linear_regressionl, go_linear_regressionl () +
go_linear_regressionl, go_linear_regressionl ()
-
go_linear_regression_leverage, go_linear_regression_leverage () +
go_linear_regression_leverage, go_linear_regression_leverage ()
-
go_linear_regression_leveragel, go_linear_regression_leveragel () +
go_linear_regression_leveragel, go_linear_regression_leveragel ()
-
go_linear_solve, go_linear_solve () +
go_linear_solve, go_linear_solve ()
-
go_linear_solvel, go_linear_solvel () +
go_linear_solvel, go_linear_solvel ()
-
go_linear_solve_multiple, go_linear_solve_multiple () +
go_linear_solve_multiple, go_linear_solve_multiple ()
-
go_linear_solve_multiplel, go_linear_solve_multiplel () +
go_linear_solve_multiplel, go_linear_solve_multiplel ()
-
go_line_dash_as_label, go_line_dash_as_label () +
go_line_dash_as_label, go_line_dash_as_label ()
-
go_line_dash_as_str, go_line_dash_as_str () +
go_line_dash_as_str, go_line_dash_as_str ()
-
go_line_dash_from_str, go_line_dash_from_str () +
go_line_dash_from_str, go_line_dash_from_str ()
-
go_line_dash_get_length, go_line_dash_get_length () +
go_line_dash_get_length, go_line_dash_get_length ()
-
go_line_dash_get_sequence, go_line_dash_get_sequence () +
go_line_dash_get_sequence, go_line_dash_get_sequence ()
-
go_line_dash_sequence_free, go_line_dash_sequence_free () +
go_line_dash_sequence_free, go_line_dash_sequence_free ()
-
go_line_interpolation_as_label, go_line_interpolation_as_label () +
go_line_interpolation_as_label, go_line_interpolation_as_label ()
-
go_line_interpolation_as_str, go_line_interpolation_as_str () +
go_line_interpolation_as_str, go_line_interpolation_as_str ()
-
go_line_interpolation_auto_skip, go_line_interpolation_auto_skip () +
go_line_interpolation_auto_skip, go_line_interpolation_auto_skip ()
-
go_line_interpolation_from_str, go_line_interpolation_from_str () +
go_line_interpolation_from_str, go_line_interpolation_from_str ()
-
go_line_interpolation_supports_radial, go_line_interpolation_supports_radial () +
go_line_interpolation_supports_radial, go_line_interpolation_supports_radial ()
-
GO_LIST_APPEND, GO_LIST_APPEND() +
GO_LIST_APPEND, GO_LIST_APPEND()
-
GO_LIST_CONCAT, GO_LIST_CONCAT() +
GO_LIST_CONCAT, GO_LIST_CONCAT()
-
GO_LIST_FOREACH, GO_LIST_FOREACH() +
GO_LIST_FOREACH, GO_LIST_FOREACH()
-
go_list_index_custom, go_list_index_custom () +
go_list_index_custom, go_list_index_custom ()
-
GO_LIST_PREPEND, GO_LIST_PREPEND() +
GO_LIST_PREPEND, GO_LIST_PREPEND()
-
GO_LIST_REMOVE, GO_LIST_REMOVE() +
GO_LIST_REMOVE, GO_LIST_REMOVE()
-
GO_LIST_REVERSE, GO_LIST_REVERSE() +
GO_LIST_REVERSE, GO_LIST_REVERSE()
-
GO_LIST_SORT, GO_LIST_SORT() +
GO_LIST_SORT, GO_LIST_SORT()
-
go_locale_sel_get_locale, go_locale_sel_get_locale () +
go_locale_sel_get_locale, go_locale_sel_get_locale ()
-
go_locale_sel_get_locale_name, go_locale_sel_get_locale_name () +
go_locale_sel_get_locale_name, go_locale_sel_get_locale_name ()
-
go_locale_sel_new, go_locale_sel_new () +
go_locale_sel_new, go_locale_sel_new ()
-
go_locale_sel_set_locale, go_locale_sel_set_locale () +
go_locale_sel_set_locale, go_locale_sel_set_locale ()
-
go_locale_sel_set_sensitive, go_locale_sel_set_sensitive () +
go_locale_sel_set_sensitive, go_locale_sel_set_sensitive ()
-
go_log10l, go_log10l () +
go_log10l, go_log10l ()
-
go_logarithmic_fit, go_logarithmic_fit () +
go_logarithmic_fit, go_logarithmic_fit ()
-
go_logarithmic_fitl, go_logarithmic_fitl () +
go_logarithmic_fitl, go_logarithmic_fitl ()
-
go_logarithmic_regression, go_logarithmic_regression () +
go_logarithmic_regression, go_logarithmic_regression ()
-
go_logarithmic_regressionl, go_logarithmic_regressionl () +
go_logarithmic_regressionl, go_logarithmic_regressionl ()
-
GO_LOGFIT_C_ACCURACY, GO_LOGFIT_C_ACCURACY +
GO_LOGFIT_C_ACCURACY, GO_LOGFIT_C_ACCURACY
-
GO_LOGFIT_C_RANGE_FACTOR, GO_LOGFIT_C_RANGE_FACTOR +
GO_LOGFIT_C_RANGE_FACTOR, GO_LOGFIT_C_RANGE_FACTOR
-
GO_LOGFIT_C_STEP_FACTOR, GO_LOGFIT_C_STEP_FACTOR +
GO_LOGFIT_C_STEP_FACTOR, GO_LOGFIT_C_STEP_FACTOR
-
go_marker_assign, go_marker_assign () +
go_marker_assign, go_marker_assign ()
-
go_marker_create_cairo_surface, go_marker_create_cairo_surface () +
go_marker_create_cairo_surface, go_marker_create_cairo_surface ()
-
go_marker_dup, go_marker_dup () +
go_marker_dup, go_marker_dup ()
-
go_marker_get_fill_color, go_marker_get_fill_color () +
go_marker_get_fill_color, go_marker_get_fill_color ()
-
go_marker_get_outline_color, go_marker_get_outline_color () +
go_marker_get_outline_color, go_marker_get_outline_color ()
-
go_marker_get_outline_width, go_marker_get_outline_width () +
go_marker_get_outline_width, go_marker_get_outline_width ()
-
go_marker_get_shape, go_marker_get_shape () +
go_marker_get_shape, go_marker_get_shape ()
-
go_marker_get_size, go_marker_get_size () +
go_marker_get_size, go_marker_get_size ()
-
go_marker_is_closed_shape, go_marker_is_closed_shape () +
go_marker_is_closed_shape, go_marker_is_closed_shape ()
-
go_marker_new, go_marker_new () +
go_marker_new, go_marker_new ()
-
go_marker_render, go_marker_render () +
go_marker_render, go_marker_render ()
-
go_marker_set_fill_color, go_marker_set_fill_color () +
go_marker_set_fill_color, go_marker_set_fill_color ()
-
go_marker_set_outline_color, go_marker_set_outline_color () +
go_marker_set_outline_color, go_marker_set_outline_color ()
-
go_marker_set_shape, go_marker_set_shape () +
go_marker_set_shape, go_marker_set_shape ()
-
go_marker_set_size, go_marker_set_size () +
go_marker_set_size, go_marker_set_size ()
-
go_marker_shape_as_str, go_marker_shape_as_str () +
go_marker_shape_as_str, go_marker_shape_as_str ()
-
go_marker_shape_from_str, go_marker_shape_from_str () +
go_marker_shape_from_str, go_marker_shape_from_str ()
-
go_matrix_determinant, go_matrix_determinant () +
go_matrix_determinant, go_matrix_determinant ()
-
go_matrix_determinantl, go_matrix_determinantl () +
go_matrix_determinantl, go_matrix_determinantl ()
-
go_matrix_invert, go_matrix_invert () +
go_matrix_invert, go_matrix_invert ()
-
go_matrix_invertl, go_matrix_invertl () +
go_matrix_invertl, go_matrix_invertl ()
-
go_matrix_pseudo_inverse, go_matrix_pseudo_inverse () +
go_matrix_pseudo_inverse, go_matrix_pseudo_inverse ()
-
go_matrix_pseudo_inversel, go_matrix_pseudo_inversel () +
go_matrix_pseudo_inversel, go_matrix_pseudo_inversel ()
-
go_memdup, go_memdup () +
go_memdup, go_memdup ()
-
go_memdup_n, go_memdup_n () +
go_memdup_n, go_memdup_n ()
-
go_mem_chunk_alloc, go_mem_chunk_alloc () +
go_mem_chunk_alloc, go_mem_chunk_alloc ()
-
go_mem_chunk_alloc0, go_mem_chunk_alloc0 () +
go_mem_chunk_alloc0, go_mem_chunk_alloc0 ()
-
go_mem_chunk_destroy, go_mem_chunk_destroy () +
go_mem_chunk_destroy, go_mem_chunk_destroy ()
-
go_mem_chunk_foreach_leak, go_mem_chunk_foreach_leak () +
go_mem_chunk_foreach_leak, go_mem_chunk_foreach_leak ()
-
go_mem_chunk_free, go_mem_chunk_free () +
go_mem_chunk_free, go_mem_chunk_free ()
-
go_mem_chunk_new, go_mem_chunk_new () +
go_mem_chunk_new, go_mem_chunk_new ()
-
go_menu_pixmaps_add_element, go_menu_pixmaps_add_element () +
go_menu_pixmaps_add_element, go_menu_pixmaps_add_element ()
-
go_menu_pixmaps_new, go_menu_pixmaps_new () +
go_menu_pixmaps_new, go_menu_pixmaps_new ()
-
go_mime_to_image_format, go_mime_to_image_format () +
go_mime_to_image_format, go_mime_to_image_format ()
-
go_mime_type_get_description, go_mime_type_get_description () +
go_mime_type_get_description, go_mime_type_get_description ()
-
go_non_linear_regression, go_non_linear_regression () +
go_non_linear_regression, go_non_linear_regression ()
-
go_non_linear_regressionl, go_non_linear_regressionl () +
go_non_linear_regressionl, go_non_linear_regressionl ()
-
go_object_properties_apply, go_object_properties_apply () +
go_object_properties_apply, go_object_properties_apply ()
-
go_object_properties_collect, go_object_properties_collect () +
go_object_properties_collect, go_object_properties_collect ()
-
go_object_properties_free, go_object_properties_free () +
go_object_properties_free, go_object_properties_free ()
-
go_object_set_property, go_object_set_property () +
go_object_set_property, go_object_set_property ()
-
go_object_toggle, go_object_toggle () +
go_object_toggle, go_object_toggle ()
-
go_option_menu_build, go_option_menu_build () +
go_option_menu_build, go_option_menu_build ()
-
go_option_menu_get_history, go_option_menu_get_history () +
go_option_menu_get_history, go_option_menu_get_history ()
-
go_option_menu_get_label, go_option_menu_get_label () +
go_option_menu_get_label, go_option_menu_get_label ()
-
go_option_menu_get_menu, go_option_menu_get_menu () +
go_option_menu_get_menu, go_option_menu_get_menu ()
-
go_option_menu_new, go_option_menu_new () +
go_option_menu_new, go_option_menu_new ()
-
go_option_menu_select_item, go_option_menu_select_item () +
go_option_menu_select_item, go_option_menu_select_item ()
-
go_option_menu_set_history, go_option_menu_set_history () +
go_option_menu_set_history, go_option_menu_set_history ()
-
go_option_menu_set_menu, go_option_menu_set_menu () +
go_option_menu_set_menu, go_option_menu_set_menu ()
-
go_palette_get_n_swatches, go_palette_get_n_swatches () +
go_palette_get_n_swatches, go_palette_get_n_swatches ()
-
go_palette_get_user_data, go_palette_get_user_data () +
go_palette_get_user_data, go_palette_get_user_data ()
-
go_palette_new, go_palette_new () +
go_palette_new, go_palette_new ()
-
go_palette_show_automatic, go_palette_show_automatic () +
go_palette_show_automatic, go_palette_show_automatic ()
-
go_palette_show_custom, go_palette_show_custom () +
go_palette_show_custom, go_palette_show_custom ()
-
go_palette_swatch_new, go_palette_swatch_new () +
go_palette_swatch_new, go_palette_swatch_new ()
-
GO_PARAM_PERSISTENT, GO_PARAM_PERSISTENT +
GO_PARAM_PERSISTENT, GO_PARAM_PERSISTENT
-
go_parse_key_value, go_parse_key_value () +
go_parse_key_value, go_parse_key_value ()
-
go_path_append, go_path_append () +
go_path_append, go_path_append ()
-
go_path_arc, go_path_arc () +
go_path_arc, go_path_arc ()
-
go_path_arc_to, go_path_arc_to () +
go_path_arc_to, go_path_arc_to ()
-
go_path_clear, go_path_clear () +
go_path_clear, go_path_clear ()
-
go_path_close, go_path_close () +
go_path_close, go_path_close ()
-
go_path_copy, go_path_copy () +
go_path_copy, go_path_copy ()
-
go_path_copy_restricted, go_path_copy_restricted () +
go_path_copy_restricted, go_path_copy_restricted ()
-
go_path_curve_to, go_path_curve_to () +
go_path_curve_to, go_path_curve_to ()
-
go_path_free, go_path_free () +
go_path_free, go_path_free ()
-
go_path_get_options, go_path_get_options () +
go_path_get_options, go_path_get_options ()
-
go_path_interpret, go_path_interpret () +
go_path_interpret, go_path_interpret ()
-
go_path_interpret_full, go_path_interpret_full () +
go_path_interpret_full, go_path_interpret_full ()
-
go_path_line_to, go_path_line_to () +
go_path_line_to, go_path_line_to ()
-
go_path_move_to, go_path_move_to () +
go_path_move_to, go_path_move_to ()
-
go_path_new, go_path_new () +
go_path_new, go_path_new ()
-
go_path_new_from_odf_enhanced_path, go_path_new_from_odf_enhanced_path () +
go_path_new_from_odf_enhanced_path, go_path_new_from_odf_enhanced_path ()
-
go_path_new_from_svg, go_path_new_from_svg () +
go_path_new_from_svg, go_path_new_from_svg ()
-
go_path_pie_wedge, go_path_pie_wedge () +
go_path_pie_wedge, go_path_pie_wedge ()
-
go_path_rectangle, go_path_rectangle () +
go_path_rectangle, go_path_rectangle ()
-
go_path_ref, go_path_ref () +
go_path_ref, go_path_ref ()
-
go_path_ring_wedge, go_path_ring_wedge () +
go_path_ring_wedge, go_path_ring_wedge ()
-
go_path_scale, go_path_scale () +
go_path_scale, go_path_scale ()
-
go_path_set_options, go_path_set_options () +
go_path_set_options, go_path_set_options ()
-
go_path_to_cairo, go_path_to_cairo () +
go_path_to_cairo, go_path_to_cairo ()
-
go_path_to_svg, go_path_to_svg () +
go_path_to_svg, go_path_to_svg ()
-
go_pattern_as_str, go_pattern_as_str () +
go_pattern_as_str, go_pattern_as_str ()
-
go_pattern_create_cairo_pattern, go_pattern_create_cairo_pattern () +
go_pattern_create_cairo_pattern, go_pattern_create_cairo_pattern ()
-
go_pattern_from_str, go_pattern_from_str () +
go_pattern_from_str, go_pattern_from_str ()
-
go_pattern_get_pattern, go_pattern_get_pattern () +
go_pattern_get_pattern, go_pattern_get_pattern ()
-
go_pattern_get_svg_path, go_pattern_get_svg_path () +
go_pattern_get_svg_path, go_pattern_get_svg_path ()
-
go_pattern_is_solid, go_pattern_is_solid () +
go_pattern_is_solid, go_pattern_is_solid ()
-
go_pattern_set_solid, go_pattern_set_solid () +
go_pattern_set_solid, go_pattern_set_solid ()
-
go_persist_prep_sax, go_persist_prep_sax () +
go_persist_prep_sax, go_persist_prep_sax ()
-
go_persist_sax_save, go_persist_sax_save () +
go_persist_sax_save, go_persist_sax_save ()
-
go_pixbuf_get_rowstride, go_pixbuf_get_rowstride () +
go_pixbuf_get_rowstride, go_pixbuf_get_rowstride ()
-
go_pixbuf_new_from_data, go_pixbuf_new_from_data () +
go_pixbuf_new_from_data, go_pixbuf_new_from_data ()
-
go_pixbuf_new_from_pixbuf, go_pixbuf_new_from_pixbuf () +
go_pixbuf_new_from_pixbuf, go_pixbuf_new_from_pixbuf ()
-
go_plugins_get_active_plugins, go_plugins_get_active_plugins () +
go_plugins_get_active_plugins, go_plugins_get_active_plugins ()
-
go_plugins_get_available_plugins, go_plugins_get_available_plugins () +
go_plugins_get_available_plugins, go_plugins_get_available_plugins ()
-
go_plugins_get_plugin_by_id, go_plugins_get_plugin_by_id () +
go_plugins_get_plugin_by_id, go_plugins_get_plugin_by_id ()
-
go_plugins_get_plugin_dir, go_plugins_get_plugin_dir () +
go_plugins_get_plugin_dir, go_plugins_get_plugin_dir ()
-
go_plugins_init, go_plugins_init () +
go_plugins_init, go_plugins_init ()
-
go_plugins_register_loader, go_plugins_register_loader () +
go_plugins_register_loader, go_plugins_register_loader ()
-
go_plugins_rescan, go_plugins_rescan () +
go_plugins_rescan, go_plugins_rescan ()
-
go_plugins_shutdown, go_plugins_shutdown () +
go_plugins_shutdown, go_plugins_shutdown ()
-
go_plugins_unregister_loader, go_plugins_unregister_loader () +
go_plugins_unregister_loader, go_plugins_unregister_loader ()
-
go_plugin_activate, go_plugin_activate () +
go_plugin_activate, go_plugin_activate ()
-
go_plugin_can_deactivate, go_plugin_can_deactivate () +
go_plugin_can_deactivate, go_plugin_can_deactivate ()
-
go_plugin_db_activate_plugin_list, go_plugin_db_activate_plugin_list () +
go_plugin_db_activate_plugin_list, go_plugin_db_activate_plugin_list ()
-
go_plugin_db_deactivate_plugin_list, go_plugin_db_deactivate_plugin_list () +
go_plugin_db_deactivate_plugin_list, go_plugin_db_deactivate_plugin_list ()
-
go_plugin_db_is_plugin_marked_for_deactivation, go_plugin_db_is_plugin_marked_for_deactivation () +
go_plugin_db_is_plugin_marked_for_deactivation, go_plugin_db_is_plugin_marked_for_deactivation ()
-
go_plugin_db_mark_plugin_for_deactivation, go_plugin_db_mark_plugin_for_deactivation () +
go_plugin_db_mark_plugin_for_deactivation, go_plugin_db_mark_plugin_for_deactivation ()
-
go_plugin_deactivate, go_plugin_deactivate () +
go_plugin_deactivate, go_plugin_deactivate ()
-
go_plugin_get_dependencies_ids, go_plugin_get_dependencies_ids () +
go_plugin_get_dependencies_ids, go_plugin_get_dependencies_ids ()
-
go_plugin_get_description, go_plugin_get_description () +
go_plugin_get_description, go_plugin_get_description ()
-
go_plugin_get_dir_name, go_plugin_get_dir_name () +
go_plugin_get_dir_name, go_plugin_get_dir_name ()
-
go_plugin_get_id, go_plugin_get_id () +
go_plugin_get_id, go_plugin_get_id ()
-
go_plugin_get_loader, go_plugin_get_loader () +
go_plugin_get_loader, go_plugin_get_loader ()
-
go_plugin_get_name, go_plugin_get_name () +
go_plugin_get_name, go_plugin_get_name ()
-
go_plugin_get_services, go_plugin_get_services () +
go_plugin_get_services, go_plugin_get_services ()
-
go_plugin_get_textdomain, go_plugin_get_textdomain () +
go_plugin_get_textdomain, go_plugin_get_textdomain ()
-
go_plugin_get_type_module, go_plugin_get_type_module () +
go_plugin_get_type_module, go_plugin_get_type_module ()
-
go_plugin_is_active, go_plugin_is_active () +
go_plugin_is_active, go_plugin_is_active ()
-
go_plugin_is_loaded, go_plugin_is_loaded () +
go_plugin_is_loaded, go_plugin_is_loaded ()
-
go_plugin_loader_get_plugin, go_plugin_loader_get_plugin () +
go_plugin_loader_get_plugin, go_plugin_loader_get_plugin ()
-
go_plugin_loader_is_base_loaded, go_plugin_loader_is_base_loaded () +
go_plugin_loader_is_base_loaded, go_plugin_loader_is_base_loaded ()
-
go_plugin_loader_load_base, go_plugin_loader_load_base () +
go_plugin_loader_load_base, go_plugin_loader_load_base ()
-
go_plugin_loader_load_service, go_plugin_loader_load_service () +
go_plugin_loader_load_service, go_plugin_loader_load_service ()
-
go_plugin_loader_module_register_version, go_plugin_loader_module_register_version () +
go_plugin_loader_module_register_version, go_plugin_loader_module_register_version ()
-
go_plugin_loader_set_attributes, go_plugin_loader_set_attributes () +
go_plugin_loader_set_attributes, go_plugin_loader_set_attributes ()
-
go_plugin_loader_set_plugin, go_plugin_loader_set_plugin () +
go_plugin_loader_set_plugin, go_plugin_loader_set_plugin ()
-
go_plugin_loader_unload_base, go_plugin_loader_unload_base () +
go_plugin_loader_unload_base, go_plugin_loader_unload_base ()
-
go_plugin_loader_unload_service, go_plugin_loader_unload_service () +
go_plugin_loader_unload_service, go_plugin_loader_unload_service ()
-
go_plugin_load_service, go_plugin_load_service () +
go_plugin_load_service, go_plugin_load_service ()
-
go_plugin_services_shutdown, go_plugin_services_shutdown () +
go_plugin_services_shutdown, go_plugin_services_shutdown ()
-
go_plugin_service_activate, go_plugin_service_activate () +
go_plugin_service_activate, go_plugin_service_activate ()
-
go_plugin_service_deactivate, go_plugin_service_deactivate () +
go_plugin_service_deactivate, go_plugin_service_deactivate ()
-
go_plugin_service_define, go_plugin_service_define () +
go_plugin_service_define, go_plugin_service_define ()
-
go_plugin_service_get_cbs, go_plugin_service_get_cbs () +
go_plugin_service_get_cbs, go_plugin_service_get_cbs ()
-
go_plugin_service_get_description, go_plugin_service_get_description () +
go_plugin_service_get_description, go_plugin_service_get_description ()
-
go_plugin_service_get_id, go_plugin_service_get_id () +
go_plugin_service_get_id, go_plugin_service_get_id ()
-
go_plugin_service_get_plugin, go_plugin_service_get_plugin () +
go_plugin_service_get_plugin, go_plugin_service_get_plugin ()
-
go_plugin_service_load, go_plugin_service_load () +
go_plugin_service_load, go_plugin_service_load ()
-
go_plugin_service_new, go_plugin_service_new () +
go_plugin_service_new, go_plugin_service_new ()
-
go_plugin_service_plugin_loader_generate_type, go_plugin_service_plugin_loader_generate_type () +
go_plugin_service_plugin_loader_generate_type, go_plugin_service_plugin_loader_generate_type ()
-
go_plugin_service_unload, go_plugin_service_unload () +
go_plugin_service_unload, go_plugin_service_unload ()
-
go_plugin_unload_service, go_plugin_unload_service () +
go_plugin_unload_service, go_plugin_unload_service ()
-
go_plugin_use_ref, go_plugin_use_ref () +
go_plugin_use_ref, go_plugin_use_ref ()
-
go_plugin_use_unref, go_plugin_use_unref () +
go_plugin_use_unref, go_plugin_use_unref ()
-
go_pow, go_pow () +
go_pow, go_pow ()
-
go_pow10, go_pow10 () +
go_pow10, go_pow10 ()
-
go_pow10l, go_pow10l () +
go_pow10l, go_pow10l ()
-
go_pow2, go_pow2 () +
go_pow2, go_pow2 ()
-
go_pow2l, go_pow2l () +
go_pow2l, go_pow2l ()
-
go_power_regression, go_power_regression () +
go_power_regression, go_power_regression ()
-
go_power_regressionl, go_power_regressionl () +
go_power_regressionl, go_power_regressionl ()
-
go_powl, go_powl () +
go_powl, go_powl ()
-
go_ptr_array_insert, go_ptr_array_insert () +
go_ptr_array_insert, go_ptr_array_insert ()
-
GO_PT_PER_IN, GO_PT_PER_IN +
GO_PT_PER_IN, GO_PT_PER_IN
-
GO_PT_TO_CM, GO_PT_TO_CM() +
GO_PT_TO_CM, GO_PT_TO_CM()
-
GO_PT_TO_EMU, GO_PT_TO_EMU() +
GO_PT_TO_EMU, GO_PT_TO_EMU()
-
GO_PT_TO_IN, GO_PT_TO_IN() +
GO_PT_TO_IN, GO_PT_TO_IN()
-
GO_PT_TO_UN, GO_PT_TO_UN() +
GO_PT_TO_UN, GO_PT_TO_UN()
-
go_quad_acos, go_quad_acos () +
go_quad_acos, go_quad_acos ()
-
go_quad_acosl, go_quad_acosl () +
go_quad_acosl, go_quad_acosl ()
-
go_quad_add, go_quad_add () +
go_quad_add, go_quad_add ()
-
go_quad_addl, go_quad_addl () +
go_quad_addl, go_quad_addl ()
-
go_quad_asin, go_quad_asin () +
go_quad_asin, go_quad_asin ()
-
go_quad_asinl, go_quad_asinl () +
go_quad_asinl, go_quad_asinl ()
-
go_quad_atan2, go_quad_atan2 () +
go_quad_atan2, go_quad_atan2 ()
-
go_quad_atan2l, go_quad_atan2l () +
go_quad_atan2l, go_quad_atan2l ()
-
go_quad_atan2pi, go_quad_atan2pi () +
go_quad_atan2pi, go_quad_atan2pi ()
-
go_quad_atan2pil, go_quad_atan2pil () +
go_quad_atan2pil, go_quad_atan2pil ()
-
go_quad_constant8, go_quad_constant8 () +
go_quad_constant8, go_quad_constant8 ()
-
go_quad_constant8l, go_quad_constant8l () +
go_quad_constant8l, go_quad_constant8l ()
-
go_quad_cos, go_quad_cos () +
go_quad_cos, go_quad_cos ()
-
go_quad_cosl, go_quad_cosl () +
go_quad_cosl, go_quad_cosl ()
-
go_quad_cospi, go_quad_cospi () +
go_quad_cospi, go_quad_cospi ()
-
go_quad_cospil, go_quad_cospil () +
go_quad_cospil, go_quad_cospil ()
-
go_quad_div, go_quad_div () +
go_quad_div, go_quad_div ()
-
go_quad_divl, go_quad_divl () +
go_quad_divl, go_quad_divl ()
-
go_quad_dot_product, go_quad_dot_product () +
go_quad_dot_product, go_quad_dot_product ()
-
go_quad_dot_productl, go_quad_dot_productl () +
go_quad_dot_productl, go_quad_dot_productl ()
-
go_quad_end, go_quad_end () +
go_quad_end, go_quad_end ()
-
go_quad_endl, go_quad_endl () +
go_quad_endl, go_quad_endl ()
-
go_quad_exp, go_quad_exp () +
go_quad_exp, go_quad_exp ()
-
go_quad_expl, go_quad_expl () +
go_quad_expl, go_quad_expl ()
-
go_quad_expm1, go_quad_expm1 () +
go_quad_expm1, go_quad_expm1 ()
-
go_quad_expm1l, go_quad_expm1l () +
go_quad_expm1l, go_quad_expm1l ()
-
go_quad_floor, go_quad_floor () +
go_quad_floor, go_quad_floor ()
-
go_quad_floorl, go_quad_floorl () +
go_quad_floorl, go_quad_floorl ()
-
go_quad_functional, go_quad_functional () +
go_quad_functional, go_quad_functional ()
-
go_quad_functionall, go_quad_functionall () +
go_quad_functionall, go_quad_functionall ()
-
go_quad_hypot, go_quad_hypot () +
go_quad_hypot, go_quad_hypot ()
-
go_quad_hypotl, go_quad_hypotl () +
go_quad_hypotl, go_quad_hypotl ()
-
go_quad_init, go_quad_init () +
go_quad_init, go_quad_init ()
-
go_quad_initl, go_quad_initl () +
go_quad_initl, go_quad_initl ()
-
go_quad_log, go_quad_log () +
go_quad_log, go_quad_log ()
-
go_quad_logl, go_quad_logl () +
go_quad_logl, go_quad_logl ()
-
go_quad_mul, go_quad_mul () +
go_quad_mul, go_quad_mul ()
-
go_quad_mul12, go_quad_mul12 () +
go_quad_mul12, go_quad_mul12 ()
-
go_quad_mul12l, go_quad_mul12l () +
go_quad_mul12l, go_quad_mul12l ()
-
go_quad_mull, go_quad_mull () +
go_quad_mull, go_quad_mull ()
-
go_quad_pow, go_quad_pow () +
go_quad_pow, go_quad_pow ()
-
go_quad_powl, go_quad_powl () +
go_quad_powl, go_quad_powl ()
-
go_quad_sin, go_quad_sin () +
go_quad_sin, go_quad_sin ()
-
go_quad_sinl, go_quad_sinl () +
go_quad_sinl, go_quad_sinl ()
-
go_quad_sinpi, go_quad_sinpi () +
go_quad_sinpi, go_quad_sinpi ()
-
go_quad_sinpil, go_quad_sinpil () +
go_quad_sinpil, go_quad_sinpil ()
-
go_quad_sqrt, go_quad_sqrt () +
go_quad_sqrt, go_quad_sqrt ()
-
go_quad_sqrtl, go_quad_sqrtl () +
go_quad_sqrtl, go_quad_sqrtl ()
-
go_quad_start, go_quad_start () +
go_quad_start, go_quad_start ()
-
go_quad_startl, go_quad_startl () +
go_quad_startl, go_quad_startl ()
-
go_quad_sub, go_quad_sub () +
go_quad_sub, go_quad_sub ()
-
go_quad_subl, go_quad_subl () +
go_quad_subl, go_quad_subl ()
-
go_quad_value, go_quad_value () +
go_quad_value, go_quad_value ()
-
go_quad_valuel, go_quad_valuel () +
go_quad_valuel, go_quad_valuel ()
-
go_range_average, go_range_average () +
go_range_average, go_range_average ()
-
go_range_averagel, go_range_averagel () +
go_range_averagel, go_range_averagel ()
-
go_range_constant, go_range_constant () +
go_range_constant, go_range_constant ()
-
go_range_constantl, go_range_constantl () +
go_range_constantl, go_range_constantl ()
-
go_range_decreasing, go_range_decreasing () +
go_range_decreasing, go_range_decreasing ()
-
go_range_decreasingl, go_range_decreasingl () +
go_range_decreasingl, go_range_decreasingl ()
-
go_range_devsq, go_range_devsq () +
go_range_devsq, go_range_devsq ()
-
go_range_devsql, go_range_devsql () +
go_range_devsql, go_range_devsql ()
-
go_range_fractile_inter, go_range_fractile_inter () +
go_range_fractile_inter, go_range_fractile_inter ()
-
go_range_fractile_interl, go_range_fractile_interl () +
go_range_fractile_interl, go_range_fractile_interl ()
-
go_range_fractile_inter_nonconst, go_range_fractile_inter_nonconst () +
go_range_fractile_inter_nonconst, go_range_fractile_inter_nonconst ()
-
go_range_fractile_inter_nonconstl, go_range_fractile_inter_nonconstl () +
go_range_fractile_inter_nonconstl, go_range_fractile_inter_nonconstl ()
-
go_range_fractile_inter_sorted, go_range_fractile_inter_sorted () +
go_range_fractile_inter_sorted, go_range_fractile_inter_sorted ()
-
go_range_fractile_inter_sortedl, go_range_fractile_inter_sortedl () +
go_range_fractile_inter_sortedl, go_range_fractile_inter_sortedl ()
-
go_range_increasing, go_range_increasing () +
go_range_increasing, go_range_increasing ()
-
go_range_increasingl, go_range_increasingl () +
go_range_increasingl, go_range_increasingl ()
-
go_range_max, go_range_max () +
go_range_max, go_range_max ()
-
go_range_maxabs, go_range_maxabs () +
go_range_maxabs, go_range_maxabs ()
-
go_range_maxabsl, go_range_maxabsl () +
go_range_maxabsl, go_range_maxabsl ()
-
go_range_maxl, go_range_maxl () +
go_range_maxl, go_range_maxl ()
-
go_range_median_inter, go_range_median_inter () +
go_range_median_inter, go_range_median_inter ()
-
go_range_median_interl, go_range_median_interl () +
go_range_median_interl, go_range_median_interl ()
-
go_range_median_inter_nonconst, go_range_median_inter_nonconst () +
go_range_median_inter_nonconst, go_range_median_inter_nonconst ()
-
go_range_median_inter_nonconstl, go_range_median_inter_nonconstl () +
go_range_median_inter_nonconstl, go_range_median_inter_nonconstl ()
-
go_range_median_inter_sorted, go_range_median_inter_sorted () +
go_range_median_inter_sorted, go_range_median_inter_sorted ()
-
go_range_median_inter_sortedl, go_range_median_inter_sortedl () +
go_range_median_inter_sortedl, go_range_median_inter_sortedl ()
-
go_range_min, go_range_min () +
go_range_min, go_range_min ()
-
go_range_minl, go_range_minl () +
go_range_minl, go_range_minl ()
-
go_range_sort, go_range_sort () +
go_range_sort, go_range_sort ()
-
go_range_sortl, go_range_sortl () +
go_range_sortl, go_range_sortl ()
-
go_range_sum, go_range_sum () +
go_range_sum, go_range_sum ()
-
go_range_suml, go_range_suml () +
go_range_suml, go_range_suml ()
-
go_range_sumsq, go_range_sumsq () +
go_range_sumsq, go_range_sumsq ()
-
go_range_sumsql, go_range_sumsql () +
go_range_sumsql, go_range_sumsql ()
-
go_range_vary_uniformly, go_range_vary_uniformly () +
go_range_vary_uniformly, go_range_vary_uniformly ()
-
go_range_vary_uniformlyl, go_range_vary_uniformlyl () +
go_range_vary_uniformlyl, go_range_vary_uniformlyl ()
-
go_regcomp, go_regcomp () +
go_regcomp, go_regcomp ()
-
go_regerror, go_regerror () +
go_regerror, go_regerror ()
-
go_regexec, go_regexec () +
go_regexec, go_regexec ()
-
go_regexp_quote, go_regexp_quote () +
go_regexp_quote, go_regexp_quote ()
-
go_regexp_quote1, go_regexp_quote1 () +
go_regexp_quote1, go_regexp_quote1 ()
-
go_regfree, go_regfree () +
go_regfree, go_regfree ()
-
go_regression_stat_destroy, go_regression_stat_destroy () +
go_regression_stat_destroy, go_regression_stat_destroy ()
-
go_regression_stat_destroyl, go_regression_stat_destroyl () +
go_regression_stat_destroyl, go_regression_stat_destroyl ()
-
go_regression_stat_new, go_regression_stat_new () +
go_regression_stat_new, go_regression_stat_new ()
-
go_regression_stat_newl, go_regression_stat_newl () +
go_regression_stat_newl, go_regression_stat_newl ()
-
go_regression_stat_t, go_regression_stat_t +
go_regression_stat_t, go_regression_stat_t
-
go_regression_stat_tl, go_regression_stat_tl +
go_regression_stat_tl, go_regression_stat_tl
-
GO_REG_OK, GO_REG_OK +
GO_REG_OK, GO_REG_OK
-
go_render_general, go_render_general () +
go_render_general, go_render_general ()
-
go_render_generall, go_render_generall () +
go_render_generall, go_render_generall ()
-
go_rint, go_rint () +
go_rint, go_rint ()
-
go_rotation_sel_get_rotation, go_rotation_sel_get_rotation () +
go_rotation_sel_get_rotation, go_rotation_sel_get_rotation ()
-
go_rotation_sel_new, go_rotation_sel_new () +
go_rotation_sel_new, go_rotation_sel_new ()
-
go_rotation_sel_new_full, go_rotation_sel_new_full () +
go_rotation_sel_new_full, go_rotation_sel_new_full ()
-
go_rotation_sel_set_rotation, go_rotation_sel_set_rotation () +
go_rotation_sel_set_rotation, go_rotation_sel_set_rotation ()
-
GO_R_OK, GO_R_OK +
GO_R_OK, GO_R_OK
-
go_search_match_string, go_search_match_string () +
go_search_match_string, go_search_match_string ()
-
go_search_replace_error_quark, go_search_replace_error_quark () +
go_search_replace_error_quark, go_search_replace_error_quark ()
-
go_search_replace_string, go_search_replace_string () +
go_search_replace_string, go_search_replace_string ()
-
go_search_replace_verify, go_search_replace_verify () +
go_search_replace_verify, go_search_replace_verify ()
-
go_selector_activate, go_selector_activate () +
go_selector_activate, go_selector_activate ()
-
go_selector_get_active, go_selector_get_active () +
go_selector_get_active, go_selector_get_active ()
-
go_selector_get_user_data, go_selector_get_user_data () +
go_selector_get_user_data, go_selector_get_user_data ()
-
go_selector_new, go_selector_new () +
go_selector_new, go_selector_new ()
-
go_selector_setup_dnd, go_selector_setup_dnd () +
go_selector_setup_dnd, go_selector_setup_dnd ()
-
go_selector_set_active, go_selector_set_active () +
go_selector_set_active, go_selector_set_active ()
-
go_selector_update_swatch, go_selector_update_swatch () +
go_selector_update_swatch, go_selector_update_swatch ()
-
go_set_file_permissions, go_set_file_permissions () +
go_set_file_permissions, go_set_file_permissions ()
-
go_shell_argv_to_glib_encoding, go_shell_argv_to_glib_encoding () +
go_shell_argv_to_glib_encoding, go_shell_argv_to_glib_encoding ()
-
go_shell_argv_to_glib_encoding_free, go_shell_argv_to_glib_encoding_free () +
go_shell_argv_to_glib_encoding_free, go_shell_argv_to_glib_encoding_free ()
-
go_shell_arg_to_uri, go_shell_arg_to_uri () +
go_shell_arg_to_uri, go_shell_arg_to_uri ()
-
go_sinpi, go_sinpi () +
go_sinpi, go_sinpi ()
-
go_sinpil, go_sinpil () +
go_sinpil, go_sinpil ()
-
GO_SLIST_APPEND, GO_SLIST_APPEND() +
GO_SLIST_APPEND, GO_SLIST_APPEND()
-
GO_SLIST_CONCAT, GO_SLIST_CONCAT() +
GO_SLIST_CONCAT, GO_SLIST_CONCAT()
-
go_slist_create, go_slist_create () +
go_slist_create, go_slist_create ()
-
GO_SLIST_FOREACH, GO_SLIST_FOREACH() +
GO_SLIST_FOREACH, GO_SLIST_FOREACH()
-
go_slist_map, go_slist_map () +
go_slist_map, go_slist_map ()
-
GO_SLIST_PREPEND, GO_SLIST_PREPEND() +
GO_SLIST_PREPEND, GO_SLIST_PREPEND()
-
GO_SLIST_REMOVE, GO_SLIST_REMOVE() +
GO_SLIST_REMOVE, GO_SLIST_REMOVE()
-
GO_SLIST_REVERSE, GO_SLIST_REVERSE() +
GO_SLIST_REVERSE, GO_SLIST_REVERSE()
-
GO_SLIST_SORT, GO_SLIST_SORT() +
GO_SLIST_SORT, GO_SLIST_SORT()
-
go_spectre_new_from_data, go_spectre_new_from_data () +
go_spectre_new_from_data, go_spectre_new_from_data ()
-
go_spectre_new_from_file, go_spectre_new_from_file () +
go_spectre_new_from_file, go_spectre_new_from_file ()
-
go_stern_brocot, go_stern_brocot () +
go_stern_brocot, go_stern_brocot ()
-
go_strescape, go_strescape () +
go_strescape, go_strescape ()
-
go_string_append_c_n, go_string_append_c_n () +
go_string_append_c_n, go_string_append_c_n ()
-
go_string_append_gstring, go_string_append_gstring () +
go_string_append_gstring, go_string_append_gstring ()
-
go_string_cmp, go_string_cmp () +
go_string_cmp, go_string_cmp ()
-
go_string_cmp_ignorecase, go_string_cmp_ignorecase () +
go_string_cmp_ignorecase, go_string_cmp_ignorecase ()
-
go_string_equal, go_string_equal () +
go_string_equal, go_string_equal ()
-
go_string_equal_ignorecase, go_string_equal_ignorecase () +
go_string_equal_ignorecase, go_string_equal_ignorecase ()
-
go_string_equal_rich, go_string_equal_rich () +
go_string_equal_rich, go_string_equal_rich ()
-
go_string_ERROR, go_string_ERROR () +
go_string_ERROR, go_string_ERROR ()
-
go_string_foreach_base, go_string_foreach_base () +
go_string_foreach_base, go_string_foreach_base ()
-
go_string_get_casefold, go_string_get_casefold () +
go_string_get_casefold, go_string_get_casefold ()
-
go_string_get_casefolded_collate, go_string_get_casefolded_collate () +
go_string_get_casefolded_collate, go_string_get_casefolded_collate ()
-
go_string_get_collation, go_string_get_collation () +
go_string_get_collation, go_string_get_collation ()
-
go_string_get_len, go_string_get_len () +
go_string_get_len, go_string_get_len ()
-
go_string_get_markup, go_string_get_markup () +
go_string_get_markup, go_string_get_markup ()
-
go_string_get_phonetic, go_string_get_phonetic () +
go_string_get_phonetic, go_string_get_phonetic ()
-
go_string_get_ref_count, go_string_get_ref_count () +
go_string_get_ref_count, go_string_get_ref_count ()
-
go_string_hash, go_string_hash () +
go_string_hash, go_string_hash ()
-
go_string_new, go_string_new () +
go_string_new, go_string_new ()
-
go_string_new_len, go_string_new_len () +
go_string_new_len, go_string_new_len ()
-
go_string_new_nocopy, go_string_new_nocopy () +
go_string_new_nocopy, go_string_new_nocopy ()
-
go_string_new_nocopy_len, go_string_new_nocopy_len () +
go_string_new_nocopy_len, go_string_new_nocopy_len ()
-
go_string_new_rich, go_string_new_rich () +
go_string_new_rich, go_string_new_rich ()
-
go_string_new_rich_nocopy, go_string_new_rich_nocopy () +
go_string_new_rich_nocopy, go_string_new_rich_nocopy ()
-
go_string_ref, go_string_ref () +
go_string_ref, go_string_ref ()
-
go_string_replace, go_string_replace () +
go_string_replace, go_string_replace ()
-
go_string_slist_copy, go_string_slist_copy() +
go_string_slist_copy, go_string_slist_copy()
-
go_string_trim, go_string_trim () +
go_string_trim, go_string_trim ()
-
go_string_unref, go_string_unref () +
go_string_unref, go_string_unref ()
-
go_strsplit_to_slist, go_strsplit_to_slist () +
go_strsplit_to_slist, go_strsplit_to_slist ()
-
go_strtod, go_strtod () +
go_strtod, go_strtod ()
-
go_strtold, go_strtold () +
go_strtold, go_strtold ()
-
go_strunescape, go_strunescape () +
go_strunescape, go_strunescape ()
-
go_str_compare, go_str_compare () +
go_str_compare, go_str_compare ()
-
go_styled_object_apply_theme, go_styled_object_apply_theme () +
go_styled_object_apply_theme, go_styled_object_apply_theme ()
-
go_styled_object_fill, go_styled_object_fill () +
go_styled_object_fill, go_styled_object_fill ()
-
go_styled_object_get_auto_style, go_styled_object_get_auto_style () +
go_styled_object_get_auto_style, go_styled_object_get_auto_style ()
-
go_styled_object_get_document, go_styled_object_get_document () +
go_styled_object_get_document, go_styled_object_get_document ()
-
go_styled_object_get_style, go_styled_object_get_style () +
go_styled_object_get_style, go_styled_object_get_style ()
-
go_styled_object_set_cairo_line, go_styled_object_set_cairo_line () +
go_styled_object_set_cairo_line, go_styled_object_set_cairo_line ()
-
go_styled_object_set_style, go_styled_object_set_style () +
go_styled_object_set_style, go_styled_object_set_style ()
-
go_styled_object_style_changed, go_styled_object_style_changed () +
go_styled_object_style_changed, go_styled_object_style_changed ()
-
go_style_apply_theme, go_style_apply_theme () +
go_style_apply_theme, go_style_apply_theme ()
-
go_style_assign, go_style_assign () +
go_style_assign, go_style_assign ()
-
go_style_clear_auto, go_style_clear_auto () +
go_style_clear_auto, go_style_clear_auto ()
-
go_style_dup, go_style_dup () +
go_style_dup, go_style_dup ()
-
go_style_fill, go_style_fill () +
go_style_fill, go_style_fill ()
-
go_style_force_auto, go_style_force_auto () +
go_style_force_auto, go_style_force_auto ()
-
go_style_get_editor, go_style_get_editor () +
go_style_get_editor, go_style_get_editor ()
-
go_style_get_marker, go_style_get_marker () +
go_style_get_marker, go_style_get_marker ()
-
go_style_is_auto, go_style_is_auto () +
go_style_is_auto, go_style_is_auto ()
-
go_style_is_different_size, go_style_is_different_size () +
go_style_is_different_size, go_style_is_different_size ()
-
go_style_is_fill_visible, go_style_is_fill_visible () +
go_style_is_fill_visible, go_style_is_fill_visible ()
-
go_style_is_line_visible, go_style_is_line_visible () +
go_style_is_line_visible, go_style_is_line_visible ()
-
go_style_is_marker_visible, go_style_is_marker_visible () +
go_style_is_marker_visible, go_style_is_marker_visible ()
-
go_style_is_outline_visible, go_style_is_outline_visible () +
go_style_is_outline_visible, go_style_is_outline_visible ()
-
go_style_new, go_style_new () +
go_style_new, go_style_new ()
-
go_style_populate_editor, go_style_populate_editor () +
go_style_populate_editor, go_style_populate_editor ()
-
go_style_set_cairo_line, go_style_set_cairo_line () +
go_style_set_cairo_line, go_style_set_cairo_line ()
-
go_style_set_fill_brightness, go_style_set_fill_brightness () +
go_style_set_fill_brightness, go_style_set_fill_brightness ()
-
go_style_set_font, go_style_set_font () +
go_style_set_font, go_style_set_font ()
-
go_style_set_font_desc, go_style_set_font_desc () +
go_style_set_font_desc, go_style_set_font_desc ()
-
go_style_set_marker, go_style_set_marker () +
go_style_set_marker, go_style_set_marker ()
-
go_style_set_text_angle, go_style_set_text_angle () +
go_style_set_text_angle, go_style_set_text_angle ()
-
GO_SUBSCRIPT_RISE, GO_SUBSCRIPT_RISE +
GO_SUBSCRIPT_RISE, GO_SUBSCRIPT_RISE
-
GO_SUBSCRIPT_SCALE, GO_SUBSCRIPT_SCALE +
GO_SUBSCRIPT_SCALE, GO_SUBSCRIPT_SCALE
-
go_sub_epsilon, go_sub_epsilon () +
go_sub_epsilon, go_sub_epsilon ()
-
go_sub_epsilonl, go_sub_epsilonl () +
go_sub_epsilonl, go_sub_epsilonl ()
-
GO_SUPERSCRIPT_RISE, GO_SUPERSCRIPT_RISE +
GO_SUPERSCRIPT_RISE, GO_SUPERSCRIPT_RISE
-
GO_SUPERSCRIPT_SCALE, GO_SUPERSCRIPT_SCALE +
GO_SUPERSCRIPT_SCALE, GO_SUPERSCRIPT_SCALE
-
go_svg_new_from_data, go_svg_new_from_data () +
go_svg_new_from_data, go_svg_new_from_data ()
-
go_svg_new_from_file, go_svg_new_from_file () +
go_svg_new_from_file, go_svg_new_from_file ()
-
go_tanpi, go_tanpi () +
go_tanpi, go_tanpi ()
-
go_tanpil, go_tanpil () +
go_tanpil, go_tanpil ()
-
go_undo_binary_new, go_undo_binary_new () +
go_undo_binary_new, go_undo_binary_new ()
-
go_undo_combine, go_undo_combine () +
go_undo_combine, go_undo_combine ()
-
go_undo_group_add, go_undo_group_add () +
go_undo_group_add, go_undo_group_add ()
-
go_undo_group_new, go_undo_group_new () +
go_undo_group_new, go_undo_group_new ()
-
go_undo_unary_new, go_undo_unary_new () +
go_undo_unary_new, go_undo_unary_new ()
-
go_undo_undo, go_undo_undo () +
go_undo_undo, go_undo_undo ()
-
go_undo_undo_with_data, go_undo_undo_with_data () +
go_undo_undo_with_data, go_undo_undo_with_data ()
-
go_unichar_issign, go_unichar_issign () +
go_unichar_issign, go_unichar_issign ()
-
GO_UN_PER_CM, GO_UN_PER_CM +
GO_UN_PER_CM, GO_UN_PER_CM
-
GO_UN_PER_EMU, GO_UN_PER_EMU +
GO_UN_PER_EMU, GO_UN_PER_EMU
-
GO_UN_PER_IN, GO_UN_PER_IN +
GO_UN_PER_IN, GO_UN_PER_IN
-
GO_UN_PER_PT, GO_UN_PER_PT +
GO_UN_PER_PT, GO_UN_PER_PT
-
GO_UN_TO_CM, GO_UN_TO_CM() +
GO_UN_TO_CM, GO_UN_TO_CM()
-
GO_UN_TO_EMU, GO_UN_TO_EMU() +
GO_UN_TO_EMU, GO_UN_TO_EMU()
-
GO_UN_TO_IN, GO_UN_TO_IN() +
GO_UN_TO_IN, GO_UN_TO_IN()
-
GO_UN_TO_PT, GO_UN_TO_PT() +
GO_UN_TO_PT, GO_UN_TO_PT()
-
go_url_check_extension, go_url_check_extension () +
go_url_check_extension, go_url_check_extension ()
-
go_url_encode, go_url_encode () +
go_url_encode, go_url_encode ()
-
go_url_make_relative, go_url_make_relative () +
go_url_make_relative, go_url_make_relative ()
-
go_url_resolve_relative, go_url_resolve_relative () +
go_url_resolve_relative, go_url_resolve_relative ()
-
go_url_simplify, go_url_simplify () +
go_url_simplify, go_url_simplify ()
-
go_utf8_collate_casefold, go_utf8_collate_casefold () +
go_utf8_collate_casefold, go_utf8_collate_casefold ()
-
go_utf8_strcapital, go_utf8_strcapital () +
go_utf8_strcapital, go_utf8_strcapital ()
GO_VAR_DECL, GO_VAR_DECL
-
GO_W_OK, GO_W_OK +
GO_W_OK, GO_W_OK
-
go_xml_get_child_by_name, go_xml_get_child_by_name () +
go_xml_get_child_by_name, go_xml_get_child_by_name ()
-
go_xml_get_child_by_name_by_lang, go_xml_get_child_by_name_by_lang () +
go_xml_get_child_by_name_by_lang, go_xml_get_child_by_name_by_lang ()
-
go_xml_get_child_by_name_no_lang, go_xml_get_child_by_name_no_lang () +
go_xml_get_child_by_name_no_lang, go_xml_get_child_by_name_no_lang ()
-
go_xml_in_doc_dispose_on_exit, go_xml_in_doc_dispose_on_exit () +
go_xml_in_doc_dispose_on_exit, go_xml_in_doc_dispose_on_exit ()
-
go_xml_node_get_bool, go_xml_node_get_bool () +
go_xml_node_get_bool, go_xml_node_get_bool ()
-
go_xml_node_get_cstr, go_xml_node_get_cstr () +
go_xml_node_get_cstr, go_xml_node_get_cstr ()
-
go_xml_node_get_double, go_xml_node_get_double () +
go_xml_node_get_double, go_xml_node_get_double ()
-
go_xml_node_get_enum, go_xml_node_get_enum () +
go_xml_node_get_enum, go_xml_node_get_enum ()
-
go_xml_node_get_gocolor, go_xml_node_get_gocolor () +
go_xml_node_get_gocolor, go_xml_node_get_gocolor ()
-
go_xml_node_get_int, go_xml_node_get_int () +
go_xml_node_get_int, go_xml_node_get_int ()
-
go_xml_node_set_bool, go_xml_node_set_bool () +
go_xml_node_set_bool, go_xml_node_set_bool ()
-
go_xml_node_set_cstr, go_xml_node_set_cstr () +
go_xml_node_set_cstr, go_xml_node_set_cstr ()
-
go_xml_node_set_double, go_xml_node_set_double () +
go_xml_node_set_double, go_xml_node_set_double ()
-
go_xml_node_set_enum, go_xml_node_set_enum () +
go_xml_node_set_enum, go_xml_node_set_enum ()
-
go_xml_node_set_gocolor, go_xml_node_set_gocolor () +
go_xml_node_set_gocolor, go_xml_node_set_gocolor ()
-
go_xml_node_set_int, go_xml_node_set_int () +
go_xml_node_set_int, go_xml_node_set_int ()
-
go_xml_out_add_color, go_xml_out_add_color () +
go_xml_out_add_color, go_xml_out_add_color ()
-
go_xml_out_add_double, go_xml_out_add_double () +
go_xml_out_add_double, go_xml_out_add_double ()
-
go_xml_out_add_long_double, go_xml_out_add_long_double () +
go_xml_out_add_long_double, go_xml_out_add_long_double ()
-
go_xml_parse_file, go_xml_parse_file () +
go_xml_parse_file, go_xml_parse_file ()
-
GO_X_OK, GO_X_OK +
GO_X_OK, GO_X_OK

I

-
isnan, isnan +
isnan, isnan

L

-
ldexpl, ldexpl () +
ldexpl, ldexpl ()
libgoffice_init, libgoffice_init ()
libgoffice_shutdown, libgoffice_shutdown ()
-
log1p, log1p () +
log1p, log1p ()

M

-
modfl, modfl () +
modfl, modfl ()
-
M_PI, M_PI +
M_PI, M_PI

S

-
strtold, strtold () +
strtold, strtold ()
diff -Nru goffice-0.10.56/docs/reference/html/index.html goffice-0.10.57/docs/reference/html/index.html --- goffice-0.10.56/docs/reference/html/index.html 2023-11-02 23:31:39.000000000 +0000 +++ goffice-0.10.57/docs/reference/html/index.html 2024-02-11 17:19:37.000000000 +0000 @@ -14,7 +14,7 @@
-

For goffice 0.10.56 +

For goffice 0.10.57


diff -Nru goffice-0.10.56/goffice/Makefile.am goffice-0.10.57/goffice/Makefile.am --- goffice-0.10.56/goffice/Makefile.am 2023-05-20 22:50:22.000000000 +0000 +++ goffice-0.10.57/goffice/Makefile.am 2024-01-19 20:43:15.000000000 +0000 @@ -21,7 +21,8 @@ noinst_HEADERS = \ app/file-priv.h \ math/go-ryu.h \ - goffice-debug.h + goffice-debug.h \ + goffice-multipass.h app_SOURCES = \ app/go-doc.c \ @@ -373,6 +374,11 @@ math/go-R.h \ math/go-distribution.h +if GOFFICE_WITH_DECIMAL64 +math_SOURCES += math/go-decimal.c +math_HEADERS += math/go-decimal.h +endif + ##################################### # utils directory files utils_SOURCES = \ @@ -490,6 +496,7 @@ libgoffice_@GOFFICE_API_VER@_la_SOURCES = \ goffice.c \ + outoflinedocs.c \ goffice-priv.h \ $(app_SOURCES) \ $(canvas_SOURCES) \ diff -Nru goffice-0.10.56/goffice/Makefile.in goffice-0.10.57/goffice/Makefile.in --- goffice-0.10.56/goffice/Makefile.in 2023-11-02 23:08:03.000000000 +0000 +++ goffice-0.10.57/goffice/Makefile.in 2024-01-20 03:19:44.000000000 +0000 @@ -90,38 +90,40 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +@GOFFICE_WITH_DECIMAL64_TRUE@am__append_1 = math/go-decimal.c +@GOFFICE_WITH_DECIMAL64_TRUE@am__append_2 = math/go-decimal.h @WITH_WIN32_FALSE@libgoffice_@GOFFICE_API_VER@_la_DEPENDENCIES = \ @WITH_WIN32_FALSE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -@WITH_WIN32_TRUE@am__append_1 = -no-undefined -export-symbols goffice.def -@WITH_GTK_TRUE@am__append_2 = \ +@WITH_WIN32_TRUE@am__append_3 = -no-undefined -export-symbols goffice.def +@WITH_GTK_TRUE@am__append_4 = \ @WITH_GTK_TRUE@ $(canvas_gtk_SOURCES) \ @WITH_GTK_TRUE@ $(component_SOURCES) \ @WITH_GTK_TRUE@ $(graph_gtk_SOURCES) \ @WITH_GTK_TRUE@ $(gtk_SOURCES) -@WITH_GTK_FALSE@am__append_3 = \ +@WITH_GTK_FALSE@am__append_5 = \ @WITH_GTK_FALSE@ $(canvas_gtk_SOURCES) \ @WITH_GTK_FALSE@ $(component_SOURCES) \ @WITH_GTK_FALSE@ $(graph_gtk_SOURCES) \ @WITH_GTK_FALSE@ $(gtk_SOURCES) -@GOFFICE_WITH_LASEM_TRUE@am__append_4 = \ +@GOFFICE_WITH_LASEM_TRUE@am__append_6 = \ @GOFFICE_WITH_LASEM_TRUE@ $(graph_lasem_SOURCES) -@GOFFICE_WITH_LASEM_FALSE@am__append_5 = \ +@GOFFICE_WITH_LASEM_FALSE@am__append_7 = \ @GOFFICE_WITH_LASEM_FALSE@ $(graph_lasem_SOURCES) -@WITH_GTK_TRUE@am__append_6 = \ +@WITH_GTK_TRUE@am__append_8 = \ @WITH_GTK_TRUE@ $(canvas_gtk_HEADERS) \ @WITH_GTK_TRUE@ $(component_HEADERS) \ @WITH_GTK_TRUE@ $(graph_gtk_HEADERS) \ @WITH_GTK_TRUE@ $(gtk_HEADERS) -@GOFFICE_WITH_LASEM_TRUE@am__append_7 = \ +@GOFFICE_WITH_LASEM_TRUE@am__append_9 = \ @GOFFICE_WITH_LASEM_TRUE@ $(graph_lasem_HEADERS) -@HAVE_INTROSPECTION_TRUE@am__append_8 = GOffice-@GOFFICE_API_VER@.gir -@HAVE_INTROSPECTION_TRUE@am__append_9 = $(gir_DATA) $(typelibs_DATA) +@HAVE_INTROSPECTION_TRUE@am__append_10 = GOffice-@GOFFICE_API_VER@.gir +@HAVE_INTROSPECTION_TRUE@am__append_11 = $(gir_DATA) $(typelibs_DATA) subdir = goffice ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_is_release.m4 \ @@ -139,8 +141,9 @@ DIST_COMMON = $(srcdir)/Makefile.am $(app_HEADERS) $(canvas_HEADERS) \ $(component_HEADERS) $(go_data_HEADERS) $(graph_HEADERS) \ $(graph_gtk_HEADERS) $(graph_lasem_HEADERS) $(gtk_HEADERS) \ - $(libgoffice_@GOFFICE_API_VER@_la_HEADERS) $(math_HEADERS) \ - $(noinst_HEADERS) $(utils_HEADERS) $(am__DIST_COMMON) + $(libgoffice_@GOFFICE_API_VER@_la_HEADERS) \ + $(am__math_HEADERS_DIST) $(noinst_HEADERS) $(utils_HEADERS) \ + $(am__DIST_COMMON) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = goffice-config.h goffice-features.h CONFIG_CLEAN_FILES = @@ -183,18 +186,18 @@ LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = am__libgoffice_@GOFFICE_API_VER@_la_SOURCES_DIST = goffice.c \ - goffice-priv.h app/go-doc.c app/go-doc-control.c app/go-view.c \ - app/go-plugin.c app/go-plugin-loader.c \ - app/go-plugin-loader-module.c app/go-plugin-service.c \ - app/file.c app/error-info.c app/io-context.c \ - app/go-cmd-context.c app/go-conf.c canvas/goc-arc.c \ - canvas/goc-canvas.c canvas/goc-circle.c canvas/goc-ellipse.c \ - canvas/goc-graph.c canvas/goc-group.c canvas/goc-item.c \ - canvas/goc-image.c canvas/goc-line.c canvas/goc-path.c \ - canvas/goc-pixbuf.c canvas/goc-polyline.c canvas/goc-polygon.c \ - canvas/goc-rectangle.c canvas/goc-styled-item.c \ - canvas/goc-text.c canvas/goc-utils.c data/go-data.c \ - data/go-data-simple.c graph/gog-object.c \ + outoflinedocs.c goffice-priv.h app/go-doc.c \ + app/go-doc-control.c app/go-view.c app/go-plugin.c \ + app/go-plugin-loader.c app/go-plugin-loader-module.c \ + app/go-plugin-service.c app/file.c app/error-info.c \ + app/io-context.c app/go-cmd-context.c app/go-conf.c \ + canvas/goc-arc.c canvas/goc-canvas.c canvas/goc-circle.c \ + canvas/goc-ellipse.c canvas/goc-graph.c canvas/goc-group.c \ + canvas/goc-item.c canvas/goc-image.c canvas/goc-line.c \ + canvas/goc-path.c canvas/goc-pixbuf.c canvas/goc-polyline.c \ + canvas/goc-polygon.c canvas/goc-rectangle.c \ + canvas/goc-styled-item.c canvas/goc-text.c canvas/goc-utils.c \ + data/go-data.c data/go-data-simple.c graph/gog-object.c \ graph/gog-object-xml.c graph/gog-styled-object.c \ graph/gog-outlined-object.c graph/gog-view.c graph/gog-graph.c \ graph/gog-chart.c graph/gog-chart-map.c \ @@ -211,16 +214,17 @@ math/go-rangefunc.c math/go-regression.c math/go-cspline.c \ math/go-complex.c math/go-fft.c math/go-matrix.c \ math/go-matrix3x3.c math/go-quad.c math/go-R.c math/go-ryu.c \ - math/go-distribution.c utils/go-marshalers.list \ - utils/goffice-utils.c utils/go-color.c utils/go-file.c \ - utils/go-font.c utils/go-cairo.c utils/go-gradient.c \ - utils/go-image.c utils/go-pixbuf.c utils/go-svg.c \ - utils/go-emf.c utils/go-spectre.c utils/go-line.c \ - utils/go-locale.c utils/go-marker.c utils/go-mml-to-itex.c \ - utils/go-path.c utils/go-pattern.c utils/go-geometry.c \ - utils/go-rsm.c utils/go-string.c utils/go-undo.c \ - utils/go-unit.c utils/datetime.c utils/formats.c \ - utils/go-format.c utils/regutf8.c utils/go-glib-extras.c \ + math/go-distribution.c math/go-decimal.c \ + utils/go-marshalers.list utils/goffice-utils.c \ + utils/go-color.c utils/go-file.c utils/go-font.c \ + utils/go-cairo.c utils/go-gradient.c utils/go-image.c \ + utils/go-pixbuf.c utils/go-svg.c utils/go-emf.c \ + utils/go-spectre.c utils/go-line.c utils/go-locale.c \ + utils/go-marker.c utils/go-mml-to-itex.c utils/go-path.c \ + utils/go-pattern.c utils/go-geometry.c utils/go-rsm.c \ + utils/go-string.c utils/go-undo.c utils/go-unit.c \ + utils/datetime.c utils/formats.c utils/go-format.c \ + utils/regutf8.c utils/go-glib-extras.c \ utils/go-libxml-extras.c utils/go-pango-extras.c \ utils/go-gdk-pixbuf.c utils/go-persist.c utils/go-bezier.c \ utils/go-editor.c utils/go-style.c utils/go-styled-object.c \ @@ -268,12 +272,13 @@ graph/gog-reg-curve.lo graph/gog-smoothed-curve.lo \ graph/gog-series-labels.lo graph/gog-series-lines.lo \ graph/gog-data-set.lo graph/gog-renderer.lo -am__objects_5 = math/go-accumulator.lo math/go-dtoa.lo math/go-math.lo \ +@GOFFICE_WITH_DECIMAL64_TRUE@am__objects_5 = math/go-decimal.lo +am__objects_6 = math/go-accumulator.lo math/go-dtoa.lo math/go-math.lo \ math/go-rangefunc.lo math/go-regression.lo math/go-cspline.lo \ math/go-complex.lo math/go-fft.lo math/go-matrix.lo \ math/go-matrix3x3.lo math/go-quad.lo math/go-R.lo \ - math/go-ryu.lo math/go-distribution.lo -am__objects_6 = utils/go-marshalers.lo utils/goffice-utils.lo \ + math/go-ryu.lo math/go-distribution.lo $(am__objects_5) +am__objects_7 = utils/go-marshalers.lo utils/goffice-utils.lo \ utils/go-color.lo utils/go-file.lo utils/go-font.lo \ utils/go-cairo.lo utils/go-gradient.lo utils/go-image.lo \ utils/go-pixbuf.lo utils/go-svg.lo utils/go-emf.lo \ @@ -286,13 +291,13 @@ utils/go-libxml-extras.lo utils/go-pango-extras.lo \ utils/go-gdk-pixbuf.lo utils/go-persist.lo utils/go-bezier.lo \ utils/go-editor.lo utils/go-style.lo utils/go-styled-object.lo -am__objects_7 = canvas/goc-component.lo canvas/goc-widget.lo -am__objects_8 = component/go-component.lo \ +am__objects_8 = canvas/goc-component.lo canvas/goc-widget.lo +am__objects_9 = component/go-component.lo \ component/go-component-factory.lo \ component/go-component-mime-dialog.lo -am__objects_9 = graph/gog-guru.lo graph/gog-data-allocator.lo \ +am__objects_10 = graph/gog-guru.lo graph/gog-data-allocator.lo \ graph/gog-child-button.lo -am__objects_10 = gtk/goffice-gtk.lo gtk/go-font-sel.lo \ +am__objects_11 = gtk/goffice-gtk.lo gtk/go-font-sel.lo \ gtk/go-font-sel-dialog.lo gtk/go-format-sel.lo \ gtk/go-rotation-sel.lo gtk/go-charmap-sel.lo \ gtk/go-locale-sel.lo gtk/go-3d-rotation-sel.lo \ @@ -306,14 +311,14 @@ gtk/go-line-selector.lo gtk/go-marker-selector.lo \ gtk/go-pattern-selector.lo gtk/go-graph-widget.lo \ gtk/go-image-sel.lo gtk/go-math-editor.lo -@WITH_GTK_TRUE@am__objects_11 = $(am__objects_7) $(am__objects_8) \ -@WITH_GTK_TRUE@ $(am__objects_9) $(am__objects_10) -am__objects_12 = graph/gog-equation.lo -@GOFFICE_WITH_LASEM_TRUE@am__objects_13 = $(am__objects_12) +@WITH_GTK_TRUE@am__objects_12 = $(am__objects_8) $(am__objects_9) \ +@WITH_GTK_TRUE@ $(am__objects_10) $(am__objects_11) +am__objects_13 = graph/gog-equation.lo +@GOFFICE_WITH_LASEM_TRUE@am__objects_14 = $(am__objects_13) am_libgoffice_@GOFFICE_API_VER@_la_OBJECTS = goffice.lo \ - $(am__objects_1) $(am__objects_2) $(am__objects_3) \ - $(am__objects_4) $(am__objects_5) $(am__objects_6) \ - $(am__objects_11) $(am__objects_13) + outoflinedocs.lo $(am__objects_1) $(am__objects_2) \ + $(am__objects_3) $(am__objects_4) $(am__objects_6) \ + $(am__objects_7) $(am__objects_12) $(am__objects_14) libgoffice_@GOFFICE_API_VER@_la_OBJECTS = \ $(am_libgoffice_@GOFFICE_API_VER@_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) @@ -340,9 +345,10 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/goffice.Plo \ - app/$(DEPDIR)/error-info.Plo app/$(DEPDIR)/file.Plo \ - app/$(DEPDIR)/go-cmd-context.Plo app/$(DEPDIR)/go-conf.Plo \ - app/$(DEPDIR)/go-doc-control.Plo app/$(DEPDIR)/go-doc.Plo \ + ./$(DEPDIR)/outoflinedocs.Plo app/$(DEPDIR)/error-info.Plo \ + app/$(DEPDIR)/file.Plo app/$(DEPDIR)/go-cmd-context.Plo \ + app/$(DEPDIR)/go-conf.Plo app/$(DEPDIR)/go-doc-control.Plo \ + app/$(DEPDIR)/go-doc.Plo \ app/$(DEPDIR)/go-plugin-loader-module.Plo \ app/$(DEPDIR)/go-plugin-loader.Plo \ app/$(DEPDIR)/go-plugin-service.Plo \ @@ -425,6 +431,7 @@ gtk/$(DEPDIR)/go-selector.Plo gtk/$(DEPDIR)/goffice-gtk.Plo \ math/$(DEPDIR)/go-R.Plo math/$(DEPDIR)/go-accumulator.Plo \ math/$(DEPDIR)/go-complex.Plo math/$(DEPDIR)/go-cspline.Plo \ + math/$(DEPDIR)/go-decimal.Plo \ math/$(DEPDIR)/go-distribution.Plo math/$(DEPDIR)/go-dtoa.Plo \ math/$(DEPDIR)/go-fft.Plo math/$(DEPDIR)/go-math.Plo \ math/$(DEPDIR)/go-matrix.Plo math/$(DEPDIR)/go-matrix3x3.Plo \ @@ -480,6 +487,12 @@ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(gir_DATA) $(goffice_mslib_DATA) $(typelibs_DATA) +am__math_HEADERS_DIST = math/goffice-math.h math/go-accumulator.h \ + math/go-dtoa.h math/go-math.h math/go-rangefunc.h \ + math/go-regression.h math/go-cspline.h math/go-complex.h \ + math/go-fft.h math/go-matrix.h math/go-matrix3x3.h \ + math/go-quad.h math/go-R.h math/go-distribution.h \ + math/go-decimal.h HEADERS = $(app_HEADERS) $(canvas_HEADERS) $(component_HEADERS) \ $(go_data_HEADERS) $(graph_HEADERS) $(graph_gtk_HEADERS) \ $(graph_lasem_HEADERS) $(gtk_HEADERS) \ @@ -711,7 +724,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = subdir-objects -INTROSPECTION_GIRS = $(am__append_8) +INTROSPECTION_GIRS = $(am__append_10) INTROSPECTION_SCANNER_ARGS = \ --add-include-path="${INTROSPECTION_GIRDIR}" \ -v --warn-all --accept-unprefixed -DGOFFICE_DISABLE_DEPRECATED \ @@ -729,7 +742,7 @@ ##################################### #app directory files noinst_HEADERS = app/file-priv.h math/go-ryu.h goffice-debug.h \ - graph/gog-axis-line-impl.h + goffice-multipass.h graph/gog-axis-line-impl.h app_SOURCES = \ app/go-doc.c \ app/go-doc-control.c \ @@ -784,8 +797,8 @@ app/go-service-impl.h EXTRA_DIST = $(app_UNUSED) app/go-conf-keyfile.c \ - app/go-conf-gsettings.c app/go-conf-win32.c $(am__append_3) \ - $(am__append_5) $(embedded_stuff) + app/go-conf-gsettings.c app/go-conf-win32.c $(am__append_5) \ + $(am__append_7) $(embedded_stuff) ##################################### # canvas directory files @@ -1043,39 +1056,18 @@ ##################################### # maths directory files -math_SOURCES = \ - math/go-accumulator.c \ - math/go-dtoa.c \ - math/go-math.c \ - math/go-rangefunc.c \ - math/go-regression.c \ - math/go-cspline.c \ - math/go-complex.c \ - math/go-fft.c \ - math/go-matrix.c \ - math/go-matrix3x3.c \ - math/go-quad.c \ - math/go-R.c \ - math/go-ryu.c \ - math/go-distribution.c - +math_SOURCES = math/go-accumulator.c math/go-dtoa.c math/go-math.c \ + math/go-rangefunc.c math/go-regression.c math/go-cspline.c \ + math/go-complex.c math/go-fft.c math/go-matrix.c \ + math/go-matrix3x3.c math/go-quad.c math/go-R.c math/go-ryu.c \ + math/go-distribution.c $(am__append_1) mathdir = $(goffice_include_dir)/math -math_HEADERS = \ - math/goffice-math.h \ - math/go-accumulator.h \ - math/go-dtoa.h \ - math/go-math.h \ - math/go-rangefunc.h \ - math/go-regression.h \ - math/go-cspline.h \ - math/go-complex.h \ - math/go-fft.h \ - math/go-matrix.h \ - math/go-matrix3x3.h \ - math/go-quad.h \ - math/go-R.h \ - math/go-distribution.h - +math_HEADERS = math/goffice-math.h math/go-accumulator.h \ + math/go-dtoa.h math/go-math.h math/go-rangefunc.h \ + math/go-regression.h math/go-cspline.h math/go-complex.h \ + math/go-fft.h math/go-matrix.h math/go-matrix3x3.h \ + math/go-quad.h math/go-R.h math/go-distribution.h \ + $(am__append_2) ##################################### # utils directory files @@ -1168,13 +1160,13 @@ $(GTK_MAC_LIBS) libgoffice_@GOFFICE_API_VER@_la_LDFLAGS = -version-info \ - $(VERSION_INFO) $(am__append_1) + $(VERSION_INFO) $(am__append_3) @WITH_WIN32_TRUE@libgoffice_@GOFFICE_API_VER@_la_DEPENDENCIES = goffice.def -CLEANFILES = $(BUILT_SOURCES) utils/go-marshalers.c $(am__append_9) -libgoffice_@GOFFICE_API_VER@_la_SOURCES = goffice.c goffice-priv.h \ - $(app_SOURCES) $(canvas_SOURCES) $(data_SOURCES) \ - $(graph_SOURCES) $(math_SOURCES) $(utils_SOURCES) \ - $(am__append_2) $(am__append_4) +CLEANFILES = $(BUILT_SOURCES) utils/go-marshalers.c $(am__append_11) +libgoffice_@GOFFICE_API_VER@_la_SOURCES = goffice.c outoflinedocs.c \ + goffice-priv.h $(app_SOURCES) $(canvas_SOURCES) \ + $(data_SOURCES) $(graph_SOURCES) $(math_SOURCES) \ + $(utils_SOURCES) $(am__append_4) $(am__append_6) libgoffice_@GOFFICE_API_VER@_ladir = $(goffice_include_dir) libgoffice_@GOFFICE_API_VER@_la_HEADERS = \ goffice-features.h \ @@ -1191,7 +1183,7 @@ goffice_include_dir = $(includedir)/libgoffice-@GOFFICE_API_VER@/goffice ALL_HDRS = goffice.h $(app_HEADERS) $(canvas_HEADERS) \ $(go_data_HEADERS) $(graph_HEADERS) $(math_HEADERS) \ - $(utils_HEADERS) $(am__append_6) $(am__append_7) + $(utils_HEADERS) $(am__append_8) $(am__append_9) @WITH_WIN32_TRUE@LIB_PUBLIC_HDRS = $(libgoffice_@GOFFICE_API_VER@_la_HEADERS) @HAVE_LIBEXE_TRUE@@WITH_WIN32_TRUE@goffice_mslibdir = $(DESTDIR)$(libdir) @HAVE_LIBEXE_TRUE@@WITH_WIN32_TRUE@goffice_mslib_DATA = goffice-0.lib @@ -1515,6 +1507,8 @@ math/go-ryu.lo: math/$(am__dirstamp) math/$(DEPDIR)/$(am__dirstamp) math/go-distribution.lo: math/$(am__dirstamp) \ math/$(DEPDIR)/$(am__dirstamp) +math/go-decimal.lo: math/$(am__dirstamp) \ + math/$(DEPDIR)/$(am__dirstamp) utils/$(am__dirstamp): @$(MKDIR_P) utils @: > utils/$(am__dirstamp) @@ -1700,6 +1694,7 @@ -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/goffice.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/outoflinedocs.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@app/$(DEPDIR)/error-info.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@app/$(DEPDIR)/file.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@app/$(DEPDIR)/go-cmd-context.Plo@am__quote@ # am--include-marker @@ -1804,6 +1799,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-accumulator.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-complex.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-cspline.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-decimal.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-distribution.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-dtoa.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@math/$(DEPDIR)/go-fft.Plo@am__quote@ # am--include-marker @@ -2339,6 +2335,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/goffice.Plo + -rm -f ./$(DEPDIR)/outoflinedocs.Plo -rm -f app/$(DEPDIR)/error-info.Plo -rm -f app/$(DEPDIR)/file.Plo -rm -f app/$(DEPDIR)/go-cmd-context.Plo @@ -2443,6 +2440,7 @@ -rm -f math/$(DEPDIR)/go-accumulator.Plo -rm -f math/$(DEPDIR)/go-complex.Plo -rm -f math/$(DEPDIR)/go-cspline.Plo + -rm -f math/$(DEPDIR)/go-decimal.Plo -rm -f math/$(DEPDIR)/go-distribution.Plo -rm -f math/$(DEPDIR)/go-dtoa.Plo -rm -f math/$(DEPDIR)/go-fft.Plo @@ -2541,6 +2539,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/goffice.Plo + -rm -f ./$(DEPDIR)/outoflinedocs.Plo -rm -f app/$(DEPDIR)/error-info.Plo -rm -f app/$(DEPDIR)/file.Plo -rm -f app/$(DEPDIR)/go-cmd-context.Plo @@ -2645,6 +2644,7 @@ -rm -f math/$(DEPDIR)/go-accumulator.Plo -rm -f math/$(DEPDIR)/go-complex.Plo -rm -f math/$(DEPDIR)/go-cspline.Plo + -rm -f math/$(DEPDIR)/go-decimal.Plo -rm -f math/$(DEPDIR)/go-distribution.Plo -rm -f math/$(DEPDIR)/go-dtoa.Plo -rm -f math/$(DEPDIR)/go-fft.Plo diff -Nru goffice-0.10.56/goffice/app/go-conf-keyfile.c goffice-0.10.57/goffice/app/go-conf-keyfile.c --- goffice-0.10.56/goffice/app/go-conf-keyfile.c 2020-06-11 21:12:24.000000000 +0000 +++ goffice-0.10.57/goffice/app/go-conf-keyfile.c 2023-12-10 21:25:48.000000000 +0000 @@ -281,7 +281,7 @@ } /** - * go_conf_get_string : + * go_conf_get_string: * @node: #GOConfNode * @key: non-%NULL string. * diff -Nru goffice-0.10.56/goffice/app/go-conf-win32.c goffice-0.10.57/goffice/app/go-conf-win32.c --- goffice-0.10.56/goffice/app/go-conf-win32.c 2020-06-11 21:12:24.000000000 +0000 +++ goffice-0.10.57/goffice/app/go-conf-win32.c 2023-12-10 21:25:48.000000000 +0000 @@ -393,7 +393,7 @@ } /** - * go_conf_get_string : + * go_conf_get_string: * @node: #GOConfNode * @key: non-%NULL string. * diff -Nru goffice-0.10.56/goffice/app/go-doc.c goffice-0.10.57/goffice/app/go-doc.c --- goffice-0.10.56/goffice/app/go-doc.c 2021-02-28 21:51:59.000000000 +0000 +++ goffice-0.10.57/goffice/app/go-doc.c 2024-01-19 03:08:35.000000000 +0000 @@ -255,7 +255,7 @@ * @doc: the document to modify * @uri: the uri for this worksheet. * - * Returns: TRUE if the name was set succesfully. + * Returns: %TRUE if the name was set succesfully. **/ gboolean go_doc_set_uri (GODoc *doc, char const *uri) @@ -314,7 +314,7 @@ * go_doc_is_dirty: * @doc: #GODoc * - * Returns: TRUE if @doc has been modified. + * Returns: %TRUE if @doc has been modified. **/ gboolean go_doc_is_dirty (GODoc const *doc) diff -Nru goffice-0.10.56/goffice/app/go-plugin.c goffice-0.10.57/goffice/app/go-plugin.c --- goffice-0.10.56/goffice/app/go-plugin.c 2020-06-11 21:10:06.000000000 +0000 +++ goffice-0.10.57/goffice/app/go-plugin.c 2024-01-19 03:08:35.000000000 +0000 @@ -427,7 +427,7 @@ * go_plugin_is_active: * @plugin: #GOPlugin * - * Returns: TRUE if @plugin is active and FALSE otherwise. + * Returns: %TRUE if @plugin is active and %FALSE otherwise. **/ gboolean go_plugin_is_active (GOPlugin *plugin) @@ -549,7 +549,7 @@ * go_plugin_is_loaded: * @plugin: #GOPlugin * - * Returns: TRUE if @plugin is loaded and FALSE otherwise. + * Returns: %TRUE if @plugin is loaded and %FALSE otherwise. **/ gboolean go_plugin_is_loaded (GOPlugin *plugin) @@ -1110,7 +1110,7 @@ * * Tells if the plugin can be deactivated using go_plugin_deactivate. * - * Returns: TRUE if @plugin can be deactivated and FALSE otherwise. + * Returns: %TRUE if @plugin can be deactivated and %FALSE otherwise. */ gboolean go_plugin_can_deactivate (GOPlugin *plugin) diff -Nru goffice-0.10.56/goffice/canvas/goc-styled-item.c goffice-0.10.57/goffice/canvas/goc-styled-item.c --- goffice-0.10.56/goffice/canvas/goc-styled-item.c 2020-06-27 00:15:07.000000000 +0000 +++ goffice-0.10.57/goffice/canvas/goc-styled-item.c 2023-12-10 21:25:48.000000000 +0000 @@ -1,5 +1,5 @@ /* - * goc-styled-item.c : + * goc-styled-item.c: * * Copyright (C) 2009 Jean Brefort (jean.brefort@normalesup.org) * @@ -34,7 +34,7 @@ **/ /** - * GocStyledItemClass : + * GocStyledItemClass: * @init_style: style initialization handler. * @reserved1: reserved for future expansion * @reserved2: reserved for future expansion @@ -65,12 +65,12 @@ switch (param_id) { - case STYLED_ITEM_PROP_STYLE : + case STYLED_ITEM_PROP_STYLE: resize = go_styled_object_set_style (GO_STYLED_OBJECT (gsi), g_value_get_object (value)); break; - case STYLED_ITEM_PROP_SCALE_LINE_WIDTH : + case STYLED_ITEM_PROP_SCALE_LINE_WIDTH: gsi->scale_line_width = g_value_get_boolean (value); break; @@ -89,11 +89,11 @@ GocStyledItem *gsi = GOC_STYLED_ITEM (obj); switch (param_id) { - case STYLED_ITEM_PROP_STYLE : + case STYLED_ITEM_PROP_STYLE: g_value_set_object (value, gsi->style); break; - case STYLED_ITEM_PROP_SCALE_LINE_WIDTH : + case STYLED_ITEM_PROP_SCALE_LINE_WIDTH: g_value_set_boolean (value, gsi->scale_line_width); default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); diff -Nru goffice-0.10.56/goffice/canvas/goc-utils.c goffice-0.10.57/goffice/canvas/goc-utils.c --- goffice-0.10.56/goffice/canvas/goc-utils.c 2022-02-20 16:54:09.000000000 +0000 +++ goffice-0.10.57/goffice/canvas/goc-utils.c 2023-12-10 21:25:48.000000000 +0000 @@ -1,5 +1,5 @@ /* - * goc-utils.c : + * goc-utils.c: * * Copyright (C) 2008 Jean Brefort (jean.brefort@normalesup.org) * @@ -62,7 +62,7 @@ } /** - * goc_points_ref : + * goc_points_ref: * @points: #GocPoints * * Increases the reference count of @points by 1. @@ -144,7 +144,7 @@ } /** - * goc_int_array_ref : + * goc_int_array_ref: * @array: #GocIntArray * * Increases the reference count of @array by 1. diff -Nru goffice-0.10.56/goffice/data/go-data.c goffice-0.10.57/goffice/data/go-data.c --- goffice-0.10.56/goffice/data/go-data.c 2020-06-11 21:10:06.000000000 +0000 +++ goffice-0.10.57/goffice/data/go-data.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-data.c : + * go-data.c: * * Copyright (C) 2003-2005 Jody Goldberg (jody@gnome.org) * @@ -174,11 +174,11 @@ } /** - * go_data_eq : - * @a: #GOData - * @b: #GOData + * go_data_eq: + * @a: (nullable): #GOData + * @b: (nullable): #GOData * - * Returns: TRUE if @a and @b are the same + * Returns: %TRUE if @a and @b are the same **/ gboolean go_data_eq (GOData const *a, GOData const *b) @@ -200,7 +200,7 @@ } /** - * go_data_preferred_fmt : + * go_data_preferred_fmt: * @dat: #GOData * * Caller is responsible for unrefing the result. @@ -218,7 +218,7 @@ } /** - * go_data_date_conv : + * go_data_date_conv: * @dat: #GOData * * Returns: the date conventions used by the data, or %NULL if not determined. @@ -235,11 +235,11 @@ /** - * go_data_serialize : + * go_data_serialize: * @dat: #GOData * @user: a gpointer describing the context. * - * NOTE : This is the _source_ not the content. (I.e., this refers to the + * NOTE: This is the _source_ not the content. (I.e., this refers to the * expression, not its current value.) * * Returns: a string representation of the data source that the caller is @@ -254,7 +254,7 @@ } /** - * go_data_unserialize : + * go_data_unserialize: * @dat: #GOData * @str: string to parse * @user: a gpointer describing the context. @@ -282,7 +282,7 @@ } /** - * go_data_emit_changed : + * go_data_emit_changed: * @dat: #GOData * * protected utility to emit a 'changed' signal @@ -705,7 +705,7 @@ go_data_scalar_get_value (GODataScalar *scalar) { GODataScalarClass const *klass = GO_DATA_SCALAR_GET_CLASS (scalar); - g_return_val_if_fail (klass != NULL, 0.); /* TODO : make this a nan */ + g_return_val_if_fail (klass != NULL, 0.); /* TODO: make this a nan */ scalar->value = (*klass->get_value) (scalar); return scalar->value; diff -Nru goffice-0.10.56/goffice/goffice-config.h.in goffice-0.10.57/goffice/goffice-config.h.in --- goffice-0.10.56/goffice/goffice-config.h.in 2023-11-02 23:08:03.000000000 +0000 +++ goffice-0.10.57/goffice/goffice-config.h.in 2024-01-20 03:19:44.000000000 +0000 @@ -43,6 +43,9 @@ /* Goffice uses Cairo */ #undef GOFFICE_WITH_CAIRO +/* Define if GOffice supports Decimal64. */ +#undef GOFFICE_WITH_DECIMAL64 + /* Define if EPS is supported */ #undef GOFFICE_WITH_EPS @@ -201,6 +204,9 @@ /* Define to 1 if you have the `strtold' function. */ #undef HAVE_STRTOLD +/* Define to 1 if the system has the type `struct printf_info'. */ +#undef HAVE_STRUCT_PRINTF_INFO + /* Define to 1 if you have the header file. */ #undef HAVE_SUNMATH_H @@ -222,6 +228,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if the system has the type `_Decimal64'. */ +#undef HAVE__DECIMAL64 + +/* Define to 1 if the system has the type `__uint128_t'. */ +#undef HAVE___UINT128_T + /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR diff -Nru goffice-0.10.56/goffice/goffice-features.h goffice-0.10.57/goffice/goffice-features.h --- goffice-0.10.56/goffice/goffice-features.h 2023-02-03 02:37:28.000000000 +0000 +++ goffice-0.10.57/goffice/goffice-features.h 2024-01-20 03:19:50.000000000 +0000 @@ -10,6 +10,9 @@ /* Define if G Office supports long double. */ #define GOFFICE_WITH_LONG_DOUBLE 1 +/* Define if G Office supports Decimal64. */ +#define GOFFICE_WITH_DECIMAL64 1 + /* Define if G Office supplies acosh. */ /* #undef GOFFICE_SUPPLIED_ACOSH */ @@ -35,7 +38,7 @@ /* #undef GOFFICE_SUPPLIED_STRTOLD */ /* The version number of this release, possibly with additional suffix */ -#define GOFFICE_VERSION "0.10.56" +#define GOFFICE_VERSION "0.10.57" /* The Epoch of this release */ #define GO_VERSION_EPOCH 0 @@ -44,7 +47,7 @@ #define GO_VERSION_MAJOR 10 /* The Minor version number of this release */ -#define GO_VERSION_MINOR 56 +#define GO_VERSION_MINOR 57 /* Extra, possibly empty tag for this release */ #define GO_VERSION_EXTRA "" diff -Nru goffice-0.10.56/goffice/goffice-features.h.in goffice-0.10.57/goffice/goffice-features.h.in --- goffice-0.10.56/goffice/goffice-features.h.in 2020-06-27 00:27:10.000000000 +0000 +++ goffice-0.10.57/goffice/goffice-features.h.in 2024-01-19 20:43:15.000000000 +0000 @@ -9,6 +9,9 @@ /* Define if G Office supports long double. */ #undef GOFFICE_WITH_LONG_DOUBLE +/* Define if G Office supports Decimal64. */ +#undef GOFFICE_WITH_DECIMAL64 + /* Define if G Office supplies acosh. */ #undef GOFFICE_SUPPLIED_ACOSH diff -Nru goffice-0.10.56/goffice/goffice-multipass.h goffice-0.10.57/goffice/goffice-multipass.h --- goffice-0.10.56/goffice/goffice-multipass.h 1970-01-01 00:00:00.000000000 +0000 +++ goffice-0.10.57/goffice/goffice-multipass.h 2024-01-19 20:43:15.000000000 +0000 @@ -0,0 +1,123 @@ +// There should be no include guard for this file + +// When we need multiple versions of some file -- one version per number +// system -- we include this file. This sets up various macros on a per- +// number system basis. +// +// Note: gdb gets confused over having multiple functions defined on the +// same file/line. + +#define INCLUDE_PASS_DOUBLE 1 +#define INCLUDE_PASS_LONG_DOUBLE 2 +#define INCLUDE_PASS_DECIMAL64 3 +#define INCLUDE_PASS_LAST 3 + + +#undef SKIP_THIS_PASS +#undef DEFINE_COMMON +#undef DOUBLE +#undef SUFFIX +#undef SUFFIX_STR +#undef INFIX +#undef DOUBLE_MANT_DIG +#undef DOUBLE_EPSILON +#undef DOUBLE_DIG +#undef DOUBLE_MIN +#undef DOUBLE_RADIX +#undef STRTO +#undef UNSCALBN +#undef CONST +#undef FORMAT_e +#undef FORMAT_f +#undef FORMAT_g +#undef FORMAT_E +#undef FORMAT_F +#undef FORMAT_G + +#ifndef INCLUDE_PASS + #define INCLUDE_PASS INCLUDE_PASS_DOUBLE + #define DEFINE_COMMON + // double + #define DOUBLE double + #define SUFFIX(_n) _n + #define SUFFIX_STR "" + #define INFIX(_a,_b) _a ## _b + #define DOUBLE_MANT_DIG DBL_MANT_DIG + #define DOUBLE_EPSILON DBL_EPSILON + #define DOUBLE_DIG DBL_DIG + #define DOUBLE_MIN DBL_MIN + #define DOUBLE_RADIX FLT_RADIX + #define STRTO go_strtod + #define UNSCALBN frexp + #define CONST(c) c + #define FORMAT_e "e" + #define FORMAT_f "f" + #define FORMAT_g "g" + #define FORMAT_E "E" + #define FORMAT_F "F" + #define FORMAT_G "G" +#elif INCLUDE_PASS == INCLUDE_PASS_DOUBLE + #undef INCLUDE_PASS + #define INCLUDE_PASS INCLUDE_PASS_LONG_DOUBLE + #ifndef GOFFICE_WITH_LONG_DOUBLE + #define SKIP_THIS_PASS + #endif + #define DOUBLE long double + #define SUFFIX(_n) _n ## l + #define SUFFIX_STR "l" + #define INFIX(_a,_b) _a ## l ## _b + #define DOUBLE_MANT_DIG LDBL_MANT_DIG + #define DOUBLE_EPSILON LDBL_EPSILON + #define DOUBLE_DIG LDBL_DIG + #define DOUBLE_MIN LDBL_MIN + #define DOUBLE_RADIX FLT_RADIX + #define STRTO go_strtold + #define UNSCALBN frexpl + #define CONST(_c) _c ## l + #define FORMAT_e "Le" + #define FORMAT_f "Lf" + #define FORMAT_g "Lg" + #define FORMAT_E "LE" + #define FORMAT_F "LF" + #define FORMAT_G "LG" +#elif INCLUDE_PASS == INCLUDE_PASS_LONG_DOUBLE + #undef INCLUDE_PASS + #define INCLUDE_PASS INCLUDE_PASS_DECIMAL64 + #ifndef GOFFICE_WITH_DECIMAL64 + #define SKIP_THIS_PASS + #endif + #define DOUBLE _Decimal64 + #define SUFFIX(_n) _n ## D + #define SUFFIX_STR "D" + #define INFIX(_a,_b) _a ## D ## _b + #define DOUBLE_MANT_DIG DECIMAL64_MANT_DIG + #define DOUBLE_EPSILON DECIMAL64_EPSILON + #define DOUBLE_DIG 16 + #define DOUBLE_MIN DECIMAL64_MIN + #define DOUBLE_RADIX 10 + #define STRTO go_strtoDd + #define UNSCALBN unscalbnD + #define CONST(_c) _c ## dd + #define FORMAT_e "We" + #define FORMAT_f "Wf" + #define FORMAT_g "Wg" + #define FORMAT_E "WE" + #define FORMAT_F "WF" + #define FORMAT_G "WG" + + // There does not seem to be a way to teach these warnings about the + // "W" modifier than we have hooked into libc's printf. (Note: nothing + // turns these off again.) + #pragma GCC diagnostic ignored "-Wformat" + #pragma GCC diagnostic ignored "-Wformat-extra-args" +#endif + +#if defined(GOFFICE_WITH_DECIMAL64) +#define LAST_INCLUDE_PASS (INCLUDE_PASS == INCLUDE_PASS_DECIMAL64) +#elif defined(GOFFICE_WITH_LONG_DOUBLE) +#define LAST_INCLUDE_PASS (INCLUDE_PASS == INCLUDE_PASS_LONG_DOUBLE) +#else +#define LAST_INCLUDE_PASS (INCLUDE_PASS == INCLUDE_PASS_DOUBLE) +#endif + +#define DOUBLE_PI CONST(3.14159265358979323846264338327950288) diff -Nru goffice-0.10.56/goffice/goffice.c goffice-0.10.57/goffice/goffice.c --- goffice-0.10.56/goffice/goffice.c 2018-08-04 19:51:35.000000000 +0000 +++ goffice-0.10.57/goffice/goffice.c 2024-01-19 20:43:15.000000000 +0000 @@ -202,6 +202,9 @@ _go_string_init (); _go_conf_init (); _go_fonts_init (); +#ifdef GOFFICE_WITH_DECIMAL64 + _go_decimal_init (); +#endif _go_math_init (); _go_rsm_init (); go_register_ui_files (); @@ -263,6 +266,9 @@ _gog_themes_shutdown (); _go_glib_extras_shutdown (); _go_fonts_shutdown (); +#ifdef GOFFICE_WITH_DECIMAL64 + _go_decimal_shutdown (); +#endif _go_conf_shutdown (); #ifdef GOFFICE_WITH_GTK _go_gtk_shutdown (); diff -Nru goffice-0.10.56/goffice/goffice.h goffice-0.10.57/goffice/goffice.h --- goffice-0.10.56/goffice/goffice.h 2021-01-18 17:42:29.000000000 +0000 +++ goffice-0.10.57/goffice/goffice.h 2024-01-19 20:43:15.000000000 +0000 @@ -26,6 +26,13 @@ #include #include +#ifdef GOFFICE_WITH_DECIMAL64 +#ifdef __GI_SCANNER__ +// Wrong, of course, but the introspection scanner does not know _Decimal64 +typedef double _Decimal64; +#endif +#endif + #ifdef GOFFICE_WITH_GTK #include #endif diff -Nru goffice-0.10.56/goffice/graph/gog-axis-color-map.c goffice-0.10.57/goffice/graph/gog-axis-color-map.c --- goffice-0.10.56/goffice/graph/gog-axis-color-map.c 2016-05-24 21:47:43.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-axis-color-map.c 2024-01-19 03:08:35.000000000 +0000 @@ -670,7 +670,7 @@ /** * gog_axis_color_map_compare: * - * Returns: TRUE if the maps are different. + * Returns: %TRUE if the maps are different. **/ static gboolean gog_axis_color_map_compare (GogAxisColorMap const *map1, GogAxisColorMap const *map2) diff -Nru goffice-0.10.56/goffice/graph/gog-axis.c goffice-0.10.57/goffice/graph/gog-axis.c --- goffice-0.10.56/goffice/graph/gog-axis.c 2020-06-11 21:12:24.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-axis.c 2024-01-19 03:08:35.000000000 +0000 @@ -99,7 +99,7 @@ { GOG_AXIS_POLAR_UNIT_GRADS, N_("Grads"), 400.0, "General", 0.0, 400.0, 50.0, 10.0} }; -#define GOG_AXIS_CIRCULAR_ROTATION_MIN -180.0 +#define GOG_AXIS_CIRCULAR_ROTATION_MIN (-180.0) #define GOG_AXIS_CIRCULAR_ROTATION_MAX 180.0 typedef struct _GogAxisMapDesc GogAxisMapDesc; @@ -3585,7 +3585,7 @@ * gog_axis_is_center_on_ticks: * @axis: #GogAxis * - * Returns: TRUE if labels are centered on ticks when @axis is discrete + * Returns: %TRUE if labels are centered on ticks when @axis is discrete **/ gboolean gog_axis_is_center_on_ticks (GogAxis const *axis) @@ -3598,7 +3598,7 @@ * gog_axis_is_discrete: * @axis: #GogAxis * - * Returns: TRUE if @axis enumerates a set of discrete items, rather than a + * Returns: %TRUE if @axis enumerates a set of discrete items, rather than a * continuous value **/ gboolean @@ -3612,7 +3612,7 @@ * gog_axis_is_inverted: * @axis: #GogAxis * - * Returns: TRUE if @axis is inverted. + * Returns: %TRUE if @axis is inverted. **/ gboolean gog_axis_is_inverted (GogAxis const *axis) @@ -3624,8 +3624,8 @@ /** * gog_axis_get_bounds: * @axis: #GogAxis - * @minima: non-NULL storage for result - * @maxima: non-NULL storage for result + * @minima: (out): storage for result + * @maxima: (out): storage for result * * Returns: %TRUE if the bounds stored in @minima and @maxima are sane **/ diff -Nru goffice-0.10.56/goffice/graph/gog-chart.c goffice-0.10.57/goffice/graph/gog-chart.c --- goffice-0.10.56/goffice/graph/gog-chart.c 2020-06-11 21:12:24.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-chart.c 2024-01-19 03:08:35.000000000 +0000 @@ -569,7 +569,7 @@ static gboolean color_scale_can_add (GogObject const *parent) { - /* TRUE if there are more color or pseudo-3d axes than there are color scales */ + /* %TRUE if there are more color or pseudo-3d axes than there are color scales */ GogChart *chart = GOG_CHART (parent); GSList *ptr; GogAxis *axis; @@ -820,7 +820,7 @@ * @cols: * @rows: * - * Returns: TRUE if the chart has been positioned. + * Returns: %TRUE if the chart has been positioned. **/ gboolean gog_chart_get_position (GogChart const *chart, diff -Nru goffice-0.10.56/goffice/graph/gog-error-bar.c goffice-0.10.57/goffice/graph/gog-error-bar.c --- goffice-0.10.56/goffice/graph/gog-error-bar.c 2014-09-21 22:03:00.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-error-bar.c 2023-12-10 21:25:48.000000000 +0000 @@ -1,5 +1,5 @@ /* - * gog-error-bar.c : + * gog-error-bar.c: * * Copyright (C) 2004 Jean Brefort (jean.brefort@ac-dijon.fr) * @@ -29,7 +29,7 @@ #define CC2XML(s) ((const xmlChar *)(s)) /** - * GogErrorBarType : + * GogErrorBarType: * @GOG_ERROR_BAR_TYPE_NONE: No error bars. * @GOG_ERROR_BAR_TYPE_ABSOLUTE: Absolute errors. * @GOG_ERROR_BAR_TYPE_RELATIVE: Relative errors. @@ -482,7 +482,7 @@ /** - * gog_error_bar_get_bounds : + * gog_error_bar_get_bounds: * @bar: A GogErrorBar * @index: the index corresponding to the value which error limits are * @min: where the minimum value will be stored @@ -617,7 +617,7 @@ } /** - * gog_error_bar_render : + * gog_error_bar_render: * @bar: A GogErrorBar * @rend: A GogRenderer * @map: A GogChartMap for the chart diff -Nru goffice-0.10.56/goffice/graph/gog-object.c goffice-0.10.57/goffice/graph/gog-object.c --- goffice-0.10.56/goffice/graph/gog-object.c 2022-02-21 23:13:51.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-object.c 2024-01-19 03:08:35.000000000 +0000 @@ -1878,7 +1878,7 @@ * * Attempts to set the position flags of @obj to @flags. * - * Returns: TRUE the new flags are permitted. + * Returns: %TRUE if the new flags are permitted. **/ gboolean gog_object_set_position_flags (GogObject *obj, GogObjectPosition flags, GogObjectPosition mask) diff -Nru goffice-0.10.56/goffice/graph/gog-series.c goffice-0.10.57/goffice/graph/gog-series.c --- goffice-0.10.56/goffice/graph/gog-series.c 2023-02-03 01:53:50.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-series.c 2024-01-19 03:08:35.000000000 +0000 @@ -1040,7 +1040,7 @@ * gog_series_has_legend: * @series: #GogSeries * - * Returns: TRUE if the series has a visible legend entry + * Returns: %TRUE if the series has a visible legend entry **/ gboolean gog_series_has_legend (GogSeries const *series) diff -Nru goffice-0.10.56/goffice/graph/gog-theme.c goffice-0.10.57/goffice/graph/gog-theme.c --- goffice-0.10.56/goffice/graph/gog-theme.c 2022-02-22 00:21:15.000000000 +0000 +++ goffice-0.10.57/goffice/graph/gog-theme.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * gog-theme.c : + * gog-theme.c: * * Copyright (C) 2003-2004 Jody Goldberg (jody@gnome.org) * Copyright (C) 2010 Jean Brefort (jean.brefort@normalesup.org) @@ -194,8 +194,8 @@ GOStyle *default_style; GPtrArray *palette; GogAxisColorMap *cm, *dcm; /* cm: color map for color axis, dcm stands for discrete color map */ - gboolean built_color_map; /* TRUE if color map is built from the palette */ - gboolean writeable; /* TRUE if theme can be edited */ + gboolean built_color_map; /* %TRUE if color map is built from the palette */ + gboolean writeable; /* %TRUE if theme can be edited */ char *path; /* file path if any */ }; @@ -888,7 +888,7 @@ } /** - * gog_theme_fillin_style : + * gog_theme_fillin_style: * @theme: #GogTheme * @style: #GOStyle to initialize * @obj: #GogObject The object associated with @style @@ -1312,7 +1312,7 @@ style->line.width = 0; /* hairline */ style->line.color = GO_COLOR_BLACK; style->fill.type = GO_STYLE_FILL_PATTERN; - /* FIXME : not really true, will want to split area from line */ + /* FIXME: not really true, will want to split area from line */ gog_theme_add_element (theme, style, map_area_series_solid_default, g_strdup ("GogSeries"), NULL); @@ -1496,7 +1496,7 @@ style->line.color = GO_COLOR_BLACK; style->fill.type = GO_STYLE_FILL_PATTERN; go_pattern_set_solid (&style->fill.pattern, GO_COLOR_GREY (0x20)); - /* FIXME : not really true, will want to split area from line */ + /* FIXME: not really true, will want to split area from line */ gog_theme_add_element (theme, style, map_area_series_solid_guppi, g_strdup ("GogSeries"), NULL); diff -Nru goffice-0.10.56/goffice/gtk/go-action-combo-stack.c goffice-0.10.57/goffice/gtk/go-action-combo-stack.c --- goffice-0.10.56/goffice/gtk/go-action-combo-stack.c 2022-01-22 23:40:25.000000000 +0000 +++ goffice-0.10.57/goffice/gtk/go-action-combo-stack.c 2023-12-10 21:25:48.000000000 +0000 @@ -209,7 +209,7 @@ } /** - * go_action_combo_stack_push : + * go_action_combo_stack_push: * @act: #GOActionComboStack * @str: The label to push * @key: a key value to id the pushed item @@ -233,7 +233,7 @@ } /** - * go_action_combo_stack_pop : + * go_action_combo_stack_pop: * @act: #GOActionComboStack * @n: count * @@ -257,7 +257,7 @@ } /** - * go_action_combo_stack_truncate : + * go_action_combo_stack_truncate: * @act: #GOActionComboStack * @n: maximum length * @@ -290,7 +290,7 @@ * Yes this interface is terrible, but we can't return the key in the * activate signal. * - * NOTE : see writeup in cb_combo_changed. + * NOTE: see writeup in cb_combo_changed. **/ gpointer go_action_combo_stack_selection (GOActionComboStack const *a) diff -Nru goffice-0.10.56/goffice/gtk/go-action-combo-text.c goffice-0.10.57/goffice/gtk/go-action-combo-text.c --- goffice-0.10.56/goffice/gtk/go-action-combo-text.c 2022-01-22 23:08:52.000000000 +0000 +++ goffice-0.10.57/goffice/gtk/go-action-combo-text.c 2023-12-10 21:25:48.000000000 +0000 @@ -256,7 +256,7 @@ } /** - * go_action_combo_text_set_entry : + * go_action_combo_text_set_entry: * @taction: @GOActionComboText * @text: the new text * @dir: #GOActionComboTextSearchDir diff -Nru goffice-0.10.56/goffice/gtk/go-color-group.c goffice-0.10.57/goffice/gtk/go-color-group.c --- goffice-0.10.56/goffice/gtk/go-color-group.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/gtk/go-color-group.c 2024-01-19 03:08:35.000000000 +0000 @@ -105,9 +105,8 @@ * @name: target name * @context: an arbitrary id to identify what context to search in * - * No reference is added if it is found. - * Returns: (transfer none): Look up the name/context specific color-group. - * %NULL if it is not found. + * Returns: (transfer none) (nullable): Look up the name/context specific + * color-group. %NULL if it is not found. **/ GOColorGroup * go_color_group_find (char const *name, gpointer context) @@ -142,10 +141,10 @@ /** * go_color_group_fetch: - * @name: target name + * @name: (nullable): target name * @context: identifying context * - * if name is NULL or a name not currently in use by another group + * if name is %NULL or a name not currently in use by another group * then a new group is created and returned. If name was NULL * then the new group is given a unique name prefixed by "__cg_autogen_name__" * (thereby insuring namespace separation). @@ -195,7 +194,7 @@ } /** - * go_color_group_add_color : + * go_color_group_add_color: * @cg: #GOColorGroup * @c: the color * diff -Nru goffice-0.10.56/goffice/gtk/go-combo-color.c goffice-0.10.57/goffice/gtk/go-combo-color.c --- goffice-0.10.56/goffice/gtk/go-combo-color.c 2020-06-11 21:12:24.000000000 +0000 +++ goffice-0.10.57/goffice/gtk/go-combo-color.c 2023-12-10 21:25:48.000000000 +0000 @@ -252,7 +252,7 @@ } /** - * go_combo_color_set_color_gdk : + * go_combo_color_set_color_gdk: * @cc: The combo * @color: The color * @@ -272,7 +272,7 @@ } /** - * go_combo_color_set_color : + * go_combo_color_set_color: * @cc: #GOComboColor * @color: a #GOColor **/ @@ -283,7 +283,7 @@ } /** - * go_combo_color_set_instant_apply : + * go_combo_color_set_instant_apply: * @cc: #GOComboColor * @active: Whether instant apply should be active or not * @@ -300,7 +300,7 @@ } /** - * go_combo_color_set_allow_alpha : + * go_combo_color_set_allow_alpha: * @cc: #GOComboColor * @allow_alpha: Support alpha layer * @@ -313,7 +313,7 @@ } /** - * go_combo_color_set_color_to_default : + * go_combo_color_set_color_to_default: * @cc: #GOComboColor * * Set the color of the combo to the default color. Causes the color_changed @@ -358,7 +358,7 @@ } /** - * go_combo_color_new : + * go_combo_color_new: * @icon: optionally %NULL. * @no_color_label: FIXME * @default_color: The colour to use as the default diff -Nru goffice-0.10.56/goffice/gtk/go-graph-widget.c goffice-0.10.57/goffice/gtk/go-graph-widget.c --- goffice-0.10.56/goffice/gtk/go-graph-widget.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/gtk/go-graph-widget.c 2023-12-10 21:25:48.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-graph-widget.c : + * go-graph-widget.c: * * Copyright (C) 2003-2005 Jean Brefort (jean.brefort@normalesup.org) * This program is free software; you can redistribute it and/or modify @@ -280,10 +280,10 @@ GOGraphWidget *w = GO_GRAPH_WIDGET (obj); switch (param_id) { - case GRAPH_WIDGET_PROP_ASPECT_RATIO : + case GRAPH_WIDGET_PROP_ASPECT_RATIO: w->aspect_ratio = g_value_get_double (value); break; - case GRAPH_WIDGET_PROP_GRAPH : + case GRAPH_WIDGET_PROP_GRAPH: w->graph = (GogGraph *) g_value_dup_object (value); w->renderer = gog_renderer_new (w->graph); g_signal_connect_swapped (w->renderer, "request_update", @@ -309,10 +309,10 @@ GOGraphWidget *w = GO_GRAPH_WIDGET (obj); switch (param_id) { - case GRAPH_WIDGET_PROP_ASPECT_RATIO : + case GRAPH_WIDGET_PROP_ASPECT_RATIO: g_value_set_double (value, w->aspect_ratio); break; - case GRAPH_WIDGET_PROP_GRAPH : + case GRAPH_WIDGET_PROP_GRAPH: g_value_set_object (value, w->graph); break; case GRAPH_WIDGET_PROP_HRES: @@ -376,7 +376,7 @@ } /** - * go_graph_widget_set_size_mode : + * go_graph_widget_set_size_mode: * @widget: #GOGraphWidget * @size_mode: #GOGraphWidgetSizeMode * @width: in pixels @@ -434,7 +434,7 @@ } /** - * go_graph_widget_new : + * go_graph_widget_new: * @graph: #GogGraph * * Creates a new #GOGraphWidget with an embedded #GogGraph. diff -Nru goffice-0.10.56/goffice/gtk/go-selector.c goffice-0.10.57/goffice/gtk/go-selector.c --- goffice-0.10.56/goffice/gtk/go-selector.c 2014-12-28 22:33:43.000000000 +0000 +++ goffice-0.10.57/goffice/gtk/go-selector.c 2024-01-19 03:08:35.000000000 +0000 @@ -361,7 +361,7 @@ * Sets current selection index, and emits "activate" signal if * selection is actually changed. * - * Returns: TRUE if selection is actually changed. + * Returns: %TRUE if selection is actually changed. **/ gboolean go_selector_set_active (GOSelector *selector, int index) @@ -386,7 +386,7 @@ * @selector: a #GOSelector * @is_auto: boolean * - * Retrieves current selection index, and set @is_auto to TRUE if + * Retrieves current selection index, and set @is_auto to %TRUE if * current selection was set by clicking on automatic palette item. * * Returns: current index. diff -Nru goffice-0.10.56/goffice/math/go-R.c goffice-0.10.57/goffice/math/go-R.c --- goffice-0.10.56/goffice/math/go-R.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-R.c 2024-01-19 20:43:15.000000000 +0000 @@ -23,22 +23,117 @@ #include "go-math.h" #include "go-R.h" -#ifndef DOUBLE +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS + +// Let's not pretend this code has been audited for _Decimal64 +#if INCLUDE_PASS == INCLUDE_PASS_DECIMAL64 +#define SKIP_THIS_PASS + +_Decimal64 +go_truncD (_Decimal64 x) +{ + return go_trunc (x); +} + +_Decimal64 +go_dnormD (_Decimal64 x, _Decimal64 mu, _Decimal64 sigma, gboolean give_log) +{ + return go_dnorm (x, mu, sigma, give_log); +} + +_Decimal64 +go_pnormD (_Decimal64 x, _Decimal64 mu, _Decimal64 sigma, gboolean lower_tail, gboolean log_p) +{ + return go_pnorm (x, mu, sigma, lower_tail, log_p); +} + +void +go_pnorm_bothD (_Decimal64 x, _Decimal64 *cum, _Decimal64 *ccum, int i_tail, gboolean log_p) +{ + double dcum, dccum; + go_pnorm_both (x, &dcum, &dccum, i_tail, log_p); + *cum = dcum; + *ccum = dccum; +} + +_Decimal64 +go_qnormD (_Decimal64 p, _Decimal64 mu, _Decimal64 sigma, gboolean lower_tail, gboolean log_p) +{ + return go_qnorm (p, mu, sigma, lower_tail, log_p); +} + +_Decimal64 +go_dlnormD (_Decimal64 x, _Decimal64 meanlog, _Decimal64 sdlog, gboolean give_log) +{ + return go_dlnorm (x, meanlog, sdlog, give_log); +} + +_Decimal64 +go_plnormD (_Decimal64 x, _Decimal64 logmean, _Decimal64 logsd, gboolean lower_tail, gboolean log_p) +{ + return go_plnorm (x, logmean, logsd, lower_tail, log_p); +} + +_Decimal64 +go_qlnormD (_Decimal64 p, _Decimal64 logmean, _Decimal64 logsd, gboolean lower_tail, gboolean log_p) +{ + return go_qlnorm (p, logmean, logsd, lower_tail, log_p); +} + +_Decimal64 +go_dweibullD (_Decimal64 x, _Decimal64 shape, _Decimal64 scale, gboolean give_log) +{ + return go_dweibull (x, shape, scale, give_log); +} + +_Decimal64 +go_pweibullD (_Decimal64 x, _Decimal64 shape, _Decimal64 scale, gboolean lower_tail, gboolean log_p) +{ + return go_pweibull (x, shape, scale, lower_tail, log_p); +} + +_Decimal64 +go_qweibullD (_Decimal64 p, _Decimal64 shape, _Decimal64 scale, gboolean lower_tail, gboolean log_p) +{ + return go_qweibull (p, shape, scale, lower_tail, log_p); +} + +_Decimal64 +go_dcauchyD (_Decimal64 x, _Decimal64 location, _Decimal64 scale, gboolean give_log) +{ + return go_dcauchy (x, location, scale, give_log); +} + +_Decimal64 +go_pcauchyD (_Decimal64 x, _Decimal64 location, _Decimal64 scale, gboolean lower_tail, gboolean log_p) +{ + return go_pcauchy (x, location, scale, lower_tail, log_p); +} + +_Decimal64 +go_qcauchyD (_Decimal64 p, _Decimal64 location, _Decimal64 scale, gboolean lower_tail, gboolean log_p) +{ + return go_qcauchy (p, location, scale, lower_tail, log_p); +} -#define DOUBLE double -#define SUFFIX(_n) _n -#define GO_const(_c) _c -#define GO_MIN DBL_MIN -#define GO_EPSILON DBL_EPSILON -#define GO_FORMAT_f "f" -#define GO_FORMAT_g "g" - -#define M_LN_SQRT_2PI GO_const(0.918938533204672741780329736406) /* log(sqrt(2*pi)) */ -#define M_SQRT_32 GO_const(5.656854249492380195206754896838) /* sqrt(32) */ -#define M_1_SQRT_2PI GO_const(0.398942280401432677939946059934) /* 1/sqrt(2pi) */ -#define M_LN2goffice GO_const(0.693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996419) -#define M_PIgoffice GO_const(3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117) -#define ML_ERR_return_NAN { return go_nan; } + +#endif + +#endif + + +#ifndef SKIP_THIS_PASS + + +#define M_LN_SQRT_2PI CONST(0.918938533204672741780329736406) /* log(sqrt(2*pi)) */ +#define M_SQRT_32 CONST(5.656854249492380195206754896838) /* sqrt(32) */ +#define M_1_SQRT_2PI CONST(0.398942280401432677939946059934) /* 1/sqrt(2pi) */ +#define M_LN2goffice CONST(0.693147180559945309417232121458176568075500134360255254120680009493393621969694715605863326996419) +#define M_PIgoffice CONST(3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117) +#define ML_ERR_return_NAN { return SUFFIX(go_nan); } /* ------------------------------------------------------------------------- */ /* --- BEGIN MAGIC R HEADER 1 MARKER --- */ @@ -167,41 +262,11 @@ #define R_D_nonint_check(x) \ if(R_D_nonint(x)) { \ - MATHLIB_WARNING("non-integer x = %" GO_FORMAT_f "", x); \ + MATHLIB_WARNING("non-integer x = %" FORMAT_f "", x); \ return R_D__0; \ } /* --- END MAGIC R HEADER 1 MARKER --- */ -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-R.c" -#undef DOUBLE -#undef SUFFIX -#undef GO_const -#undef GO_MIN -#undef GO_EPSILON -#undef GO_FORMAT_f -#undef GO_FORMAT_g - -#undef M_LN_SQRT_2PI -#undef M_SQRT_32 -#undef M_1_SQRT_2PI -#undef ML_ERR_return_NAN - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#define GO_const(_c) _c ## L -#define GO_MIN LDBL_MIN -#define GO_EPSILON LDBL_EPSILON -#define GO_FORMAT_f "Lf" -#define GO_FORMAT_g "Lg" - -#define M_LN_SQRT_2PI GO_const(0.918938533204672741780329736406) /* log(sqrt(2*pi)) */ -#define M_SQRT_32 GO_const(5.656854249492380195206754896838) /* sqrt(32) */ -#define M_1_SQRT_2PI GO_const(0.398942280401432677939946059934) /* 1/sqrt(2pi) */ -#define ML_ERR_return_NAN { return go_nanl; } /* ------------------------------------------------------------------------- */ /* --- BEGIN MAGIC R HEADER 2 MARKER --- */ @@ -363,13 +428,14 @@ #define R_D_nonint_check(x) \ if(R_D_nonint(x)) { \ - MATHLIB_WARNING("non-integer x = %" GO_FORMAT_f "", x); \ + MATHLIB_WARNING("non-integer x = %" FORMAT_f "", x); \ return R_D__0; \ } /* --- END MAGIC R HEADER 2 MARKER --- */ -#endif /* GOFFICE_WITH_LONG_DOUBLE */ -#endif /* DOUBLE */ + +// ??? + /* ------------------------------------------------------------------------- */ /* --- BEGIN MAGIC R SOURCE MARKER --- */ @@ -565,58 +631,58 @@ if(upper) return *ccum := P[X > x] = 1 - P[X <= x] */ const static DOUBLE a[5] = { - GO_const (2.2352520354606839287), - GO_const (161.02823106855587881), - GO_const (1067.6894854603709582), - GO_const (18154.981253343561249), - GO_const (0.065682337918207449113) + CONST (2.2352520354606839287), + CONST (161.02823106855587881), + CONST (1067.6894854603709582), + CONST (18154.981253343561249), + CONST (0.065682337918207449113) }; const static DOUBLE b[4] = { - GO_const (47.20258190468824187), - GO_const (976.09855173777669322), - GO_const (10260.932208618978205), - GO_const (45507.789335026729956) + CONST (47.20258190468824187), + CONST (976.09855173777669322), + CONST (10260.932208618978205), + CONST (45507.789335026729956) }; const static DOUBLE c[9] = { - GO_const (0.39894151208813466764), - GO_const (8.8831497943883759412), - GO_const (93.506656132177855979), - GO_const (597.27027639480026226), - GO_const (2494.5375852903726711), - GO_const (6848.1904505362823326), - GO_const (11602.651437647350124), - GO_const (9842.7148383839780218), - GO_const (1.0765576773720192317e-8) + CONST (0.39894151208813466764), + CONST (8.8831497943883759412), + CONST (93.506656132177855979), + CONST (597.27027639480026226), + CONST (2494.5375852903726711), + CONST (6848.1904505362823326), + CONST (11602.651437647350124), + CONST (9842.7148383839780218), + CONST (1.0765576773720192317e-8) }; const static DOUBLE d[8] = { - GO_const (22.266688044328115691), - GO_const (235.38790178262499861), - GO_const (1519.377599407554805), - GO_const (6485.558298266760755), - GO_const (18615.571640885098091), - GO_const (34900.952721145977266), - GO_const (38912.003286093271411), - GO_const (19685.429676859990727) + CONST (22.266688044328115691), + CONST (235.38790178262499861), + CONST (1519.377599407554805), + CONST (6485.558298266760755), + CONST (18615.571640885098091), + CONST (34900.952721145977266), + CONST (38912.003286093271411), + CONST (19685.429676859990727) }; const static DOUBLE p[6] = { - GO_const (0.21589853405795699), - GO_const (0.1274011611602473639), - GO_const (0.022235277870649807), - GO_const (0.001421619193227893466), - GO_const (2.9112874951168792e-5), - GO_const (0.02307344176494017303) + CONST (0.21589853405795699), + CONST (0.1274011611602473639), + CONST (0.022235277870649807), + CONST (0.001421619193227893466), + CONST (2.9112874951168792e-5), + CONST (0.02307344176494017303) }; const static DOUBLE q[5] = { - GO_const (1.28426009614491121), - GO_const (0.468238212480865118), - GO_const (0.0659881378689285515), - GO_const (0.00378239633202758244), - GO_const (7.29751555083966205e-5) + CONST (1.28426009614491121), + CONST (0.468238212480865118), + CONST (0.0659881378689285515), + CONST (0.00378239633202758244), + CONST (7.29751555083966205e-5) }; DOUBLE xden, xnum, temp, del, eps, xsq, y; #ifdef NO_DENORMS - DOUBLE min = GO_MIN; + DOUBLE min = DOUBLE_MIN; #endif int i, lower, upper; @@ -625,14 +691,14 @@ #endif /* Consider changing these : */ - eps = GO_EPSILON * 0.5; + eps = DOUBLE_EPSILON * 0.5; /* i_tail in {0,1,2} =^= {lower, upper, both} */ lower = i_tail != 1; upper = i_tail != 0; y = SUFFIX (fabs) (x); - if (y <= GO_const (0.67448975)) { /* SUFFIX (go_qnorm) (3/4) = .6744.... -- earlier had GO_const (0.66291) */ + if (y <= CONST (0.67448975)) { /* SUFFIX (go_qnorm) (3/4) = .6744.... -- earlier had CONST (0.66291) */ if (y > eps) { xsq = x * x; xnum = a[4] * xsq; @@ -700,7 +766,7 @@ xsq = x*x; - if(xsq * GO_EPSILON < 1.) + if(xsq * DOUBLE_EPSILON < 1.) del = (1. - (1. - 5./(xsq+6.)) / (xsq+4.)) / (xsq+2.); else del = 0.; @@ -820,7 +886,7 @@ q = p_ - 0.5; #ifdef DEBUG_qnorm - REprintf("SUFFIX (go_qnorm) (p=%10.7" GO_FORMAT_g ", m=%" GO_FORMAT_g ", s=%" GO_FORMAT_g ", l.t.= %d, log= %d): q = %" GO_FORMAT_g "\n", + REprintf("SUFFIX (go_qnorm) (p=%10.7" FORMAT_g ", m=%" FORMAT_g ", s=%" FORMAT_g ", l.t.= %d, log= %d): q = %" FORMAT_g "\n", p,mu,sigma, lower_tail, log_p, q); #endif @@ -836,17 +902,17 @@ and provided hash codes for checking them...) */ if (SUFFIX (fabs) (q) <= .425) {/* 0.075 <= p <= 0.925 */ - r = GO_const (.180625) - q * q; + r = CONST (.180625) - q * q; val = - q * (((((((r * GO_const (2509.0809287301226727) + - GO_const (33430.575583588128105)) * r + GO_const (67265.770927008700853)) * r + - GO_const (45921.953931549871457)) * r + GO_const (13731.693765509461125)) * r + - GO_const (1971.5909503065514427)) * r + GO_const (133.14166789178437745)) * r + - GO_const (3.387132872796366608)) - / (((((((r * GO_const (5226.495278852854561) + - GO_const (28729.085735721942674)) * r + GO_const (39307.89580009271061)) * r + - GO_const (21213.794301586595867)) * r + GO_const (5394.1960214247511077)) * r + - GO_const (687.1870074920579083)) * r + GO_const (42.313330701600911252)) * r + 1.); + q * (((((((r * CONST (2509.0809287301226727) + + CONST (33430.575583588128105)) * r + CONST (67265.770927008700853)) * r + + CONST (45921.953931549871457)) * r + CONST (13731.693765509461125)) * r + + CONST (1971.5909503065514427)) * r + CONST (133.14166789178437745)) * r + + CONST (3.387132872796366608)) + / (((((((r * CONST (5226.495278852854561) + + CONST (28729.085735721942674)) * r + CONST (39307.89580009271061)) * r + + CONST (21213.794301586595867)) * r + CONST (5394.1960214247511077)) * r + + CONST (687.1870074920579083)) * r + CONST (42.313330701600911252)) * r + 1.); } else { /* closer than 0.075 from {0,1} boundary */ @@ -861,38 +927,38 @@ p : /* else */ SUFFIX (log) (r))); /* r = SUFFIX (sqrt) (-SUFFIX (log) (r)) <==> min(p, 1-p) = SUFFIX (exp) ( - r^2 ) */ #ifdef DEBUG_qnorm - REprintf("\t close to 0 or 1: r = %7" GO_FORMAT_g "\n", r); + REprintf("\t close to 0 or 1: r = %7" FORMAT_g "\n", r); #endif if (r <= 5.) { /* <==> min(p,1-p) >= SUFFIX (exp) (-25) ~= 1.3888e-11 */ r += -1.6; - val = (((((((r * GO_const (7.7454501427834140764e-4) + - GO_const (.0227238449892691845833)) * r + GO_const (.24178072517745061177)) * - r + GO_const (1.27045825245236838258)) * r + - GO_const (3.64784832476320460504)) * r + GO_const (5.7694972214606914055)) * - r + GO_const (4.6303378461565452959)) * r + - GO_const (1.42343711074968357734)) + val = (((((((r * CONST (7.7454501427834140764e-4) + + CONST (.0227238449892691845833)) * r + CONST (.24178072517745061177)) * + r + CONST (1.27045825245236838258)) * r + + CONST (3.64784832476320460504)) * r + CONST (5.7694972214606914055)) * + r + CONST (4.6303378461565452959)) * r + + CONST (1.42343711074968357734)) / (((((((r * - GO_const (1.05075007164441684324e-9) + GO_const (5.475938084995344946e-4)) * - r + GO_const (.0151986665636164571966)) * r + - GO_const (.14810397642748007459)) * r + GO_const (.68976733498510000455)) * - r + GO_const (1.6763848301838038494)) * r + - GO_const (2.05319162663775882187)) * r + 1.); + CONST (1.05075007164441684324e-9) + CONST (5.475938084995344946e-4)) * + r + CONST (.0151986665636164571966)) * r + + CONST (.14810397642748007459)) * r + CONST (.68976733498510000455)) * + r + CONST (1.6763848301838038494)) * r + + CONST (2.05319162663775882187)) * r + 1.); } else { /* very close to 0 or 1 */ r += -5.; - val = (((((((r * GO_const (2.01033439929228813265e-7) + - GO_const (2.71155556874348757815e-5)) * r + - GO_const (.0012426609473880784386)) * r + GO_const (.026532189526576123093)) * - r + GO_const (.29656057182850489123)) * r + - GO_const (1.7848265399172913358)) * r + GO_const (5.4637849111641143699)) * - r + GO_const (6.6579046435011037772)) + val = (((((((r * CONST (2.01033439929228813265e-7) + + CONST (2.71155556874348757815e-5)) * r + + CONST (.0012426609473880784386)) * r + CONST (.026532189526576123093)) * + r + CONST (.29656057182850489123)) * r + + CONST (1.7848265399172913358)) * r + CONST (5.4637849111641143699)) * + r + CONST (6.6579046435011037772)) / (((((((r * - GO_const (2.04426310338993978564e-15) + GO_const (1.4215117583164458887e-7))* - r + GO_const (1.8463183175100546818e-5)) * r + - GO_const (7.868691311456132591e-4)) * r + GO_const (.0148753612908506148525)) - * r + GO_const (.13692988092273580531)) * r + - GO_const (.59983220655588793769)) * r + 1.); + CONST (2.04426310338993978564e-15) + CONST (1.4215117583164458887e-7))* + r + CONST (1.8463183175100546818e-5)) * r + + CONST (7.868691311456132591e-4)) * r + CONST (.0148753612908506148525)) + * r + CONST (.13692988092273580531)) * r + + CONST (.59983220655588793769)) * r + 1.); } if(q < 0.0) @@ -1333,3 +1399,11 @@ /* ------------------------------------------------------------------------ */ /* --- END MAGIC R SOURCE MARKER --- */ + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-R.h goffice-0.10.57/goffice/math/go-R.h --- goffice-0.10.56/goffice/math/go-R.h 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-R.h 2024-01-19 20:43:15.000000000 +0000 @@ -39,6 +39,8 @@ double go_pcauchy (double x, double location, double scale, gboolean lower_tail, gboolean log_p); double go_qcauchy (double p, double location, double scale, gboolean lower_tail, gboolean log_p); +// ---------------------------------------------------------------------------- + #ifdef GOFFICE_WITH_LONG_DOUBLE long double go_truncl (long double x); @@ -58,6 +60,29 @@ #endif +// ---------------------------------------------------------------------------- + +#ifdef GOFFICE_WITH_DECIMAL64 + +_Decimal64 go_truncD (_Decimal64 x); +_Decimal64 go_dnormD (_Decimal64 x, _Decimal64 mu, _Decimal64 sigma, gboolean give_log); +_Decimal64 go_pnormD (_Decimal64 x, _Decimal64 mu, _Decimal64 sigma, gboolean lower_tail, gboolean log_p); +void go_pnorm_bothD (_Decimal64 x, _Decimal64 *cum, _Decimal64 *ccum, int i_tail, gboolean log_p); +_Decimal64 go_qnormD (_Decimal64 p, _Decimal64 mu, _Decimal64 sigma, gboolean lower_tail, gboolean log_p); +_Decimal64 go_dlnormD (_Decimal64 x, _Decimal64 meanlog, _Decimal64 sdlog, gboolean give_log); +_Decimal64 go_plnormD (_Decimal64 x, _Decimal64 logmean, _Decimal64 logsd, gboolean lower_tail, gboolean log_p); +_Decimal64 go_qlnormD (_Decimal64 p, _Decimal64 logmean, _Decimal64 logsd, gboolean lower_tail, gboolean log_p); +_Decimal64 go_dweibullD (_Decimal64 x, _Decimal64 shape, _Decimal64 scale, gboolean give_log); +_Decimal64 go_pweibullD (_Decimal64 x, _Decimal64 shape, _Decimal64 scale, gboolean lower_tail, gboolean log_p); +_Decimal64 go_qweibullD (_Decimal64 p, _Decimal64 shape, _Decimal64 scale, gboolean lower_tail, gboolean log_p); +_Decimal64 go_dcauchyD (_Decimal64 x, _Decimal64 location, _Decimal64 scale, gboolean give_log); +_Decimal64 go_pcauchyD (_Decimal64 x, _Decimal64 location, _Decimal64 scale, gboolean lower_tail, gboolean log_p); +_Decimal64 go_qcauchyD (_Decimal64 p, _Decimal64 location, _Decimal64 scale, gboolean lower_tail, gboolean log_p); + +#endif + +// ---------------------------------------------------------------------------- + G_END_DECLS #endif /* GO_R_H */ diff -Nru goffice-0.10.56/goffice/math/go-accumulator.c goffice-0.10.57/goffice/math/go-accumulator.c --- goffice-0.10.56/goffice/math/go-accumulator.c 2023-02-03 01:53:50.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-accumulator.c 2024-01-19 20:43:15.000000000 +0000 @@ -34,32 +34,16 @@ #include #include -#ifndef DOUBLE +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS -#define DOUBLE double -#define SUFFIX(_n) _n - -struct GOAccumulator_ { - GArray *partials; -}; -#define ACC SUFFIX(GOAccumulator) - -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-accumulator.c" -#undef DOUBLE -#undef SUFFIX -#define DOUBLE long double -#define SUFFIX(_n) _n ## l - -struct GOAccumulatorl_ { +struct INFIX(GOAccumulator,_) { GArray *partials; }; -#endif -#endif - - - +#define ACC SUFFIX(GOAccumulator) gboolean SUFFIX(go_accumulator_functional) (void) @@ -70,9 +54,6 @@ /** * go_accumulator_start: (skip) **/ -/** - * go_accumulator_startl: (skip) - **/ void * SUFFIX(go_accumulator_start) (void) { @@ -88,9 +69,6 @@ /** * go_accumulator_new: (skip) **/ -/** - * go_accumulator_newl: (skip) - **/ ACC * SUFFIX(go_accumulator_new) (void) { @@ -102,9 +80,6 @@ /** * go_accumulator_free: (skip) **/ -/** - * go_accumulator_freel: (skip) - **/ void SUFFIX(go_accumulator_free) (ACC *acc) { @@ -117,9 +92,6 @@ /** * go_accumulator_clear: (skip) **/ -/** - * go_accumulator_clearl: (skip) - **/ void SUFFIX(go_accumulator_clear) (ACC *acc) { @@ -130,9 +102,6 @@ /** * go_accumulator_add: (skip) **/ -/** - * go_accumulator_addl: (skip) - **/ void SUFFIX(go_accumulator_add) (ACC *acc, DOUBLE x) { @@ -168,9 +137,6 @@ /** * go_accumulator_add_quad: (skip) **/ -/** - * go_accumulator_add_quadl: (skip) - **/ void SUFFIX(go_accumulator_add_quad) (ACC *acc, const SUFFIX(GOQuad) *x) { @@ -184,9 +150,6 @@ /** * go_accumulator_value: (skip) **/ -/** - * go_accumulator_valuel: (skip) - **/ DOUBLE SUFFIX(go_accumulator_value) (ACC *acc) { @@ -200,3 +163,11 @@ return sum; } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-accumulator.h goffice-0.10.57/goffice/math/go-accumulator.h --- goffice-0.10.56/goffice/math/go-accumulator.h 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-accumulator.h 2024-01-19 20:43:15.000000000 +0000 @@ -31,6 +31,20 @@ long double go_accumulator_valuel (GOAccumulatorl *acc); #endif +#ifdef GOFFICE_WITH_DECIMAL64 + +gboolean go_accumulator_functionalD (void); +void *go_accumulator_startD (void); +void go_accumulator_endD (void *state); + +GOAccumulatorD *go_accumulator_newD (void); +void go_accumulator_freeD (GOAccumulatorD *acc); +void go_accumulator_clearD (GOAccumulatorD *acc); +void go_accumulator_addD (GOAccumulatorD *acc, _Decimal64 x); +void go_accumulator_add_quadD (GOAccumulatorD *acc, const GOQuadD *x); +_Decimal64 go_accumulator_valueD (GOAccumulatorD *acc); +#endif + G_END_DECLS #endif diff -Nru goffice-0.10.56/goffice/math/go-complex.c goffice-0.10.57/goffice/math/go-complex.c --- goffice-0.10.56/goffice/math/go-complex.c 2022-07-06 19:34:49.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-complex.c 2024-01-19 20:43:15.000000000 +0000 @@ -28,32 +28,10 @@ #include #include - -#ifndef DOUBLE - -#define DOUBLE double -#define SUFFIX(_n) _n -#define go_strto go_strtod -#define GO_const(_n) _n - -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-complex.c" -#undef DOUBLE -#undef SUFFIX -#undef go_strto -#undef GO_const -#define LONG_DOUBLE_VERSION - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#define go_strto go_strtold -#define GO_const(_n) _n ## L -#endif - -#endif +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS #define COMPLEX SUFFIX(GOComplex) @@ -80,8 +58,10 @@ } -#ifdef LONG_DOUBLE_VERSION +#if INCLUDE_PASS == INCLUDE_PASS_LONG_DOUBLE MAKE_BOXED_TYPE(go_complexl_get_type, "GOComplexl") +#elif INCLUDE_PASS == INCLUDE_PASS_DECIMAL64 +MAKE_BOXED_TYPE(go_complexD_get_type, "GOComplexD") #else MAKE_BOXED_TYPE(go_complex_get_type, "GOComplex") #ifndef GOFFICE_WITH_LONG_DOUBLE @@ -89,13 +69,18 @@ GType go_complexl_get_type (void); GType go_complexl_get_type (void) { return 0; } #endif +#ifndef GOFFICE_WITH_DECIMAL64 +// Hack for introspection +GType go_complexD_get_type (void); +GType go_complexD_get_type (void) { return 0; } +#endif #endif /* ------------------------------------------------------------------------- */ char * SUFFIX(go_complex_to_string) (COMPLEX const *src, char const *reformat, - char const *imformat, char imunit) + char const *imformat, char imunit) { char *re_buffer = NULL; char *im_buffer = NULL; @@ -170,7 +155,7 @@ return 0; } - x = go_strto (src, &end); + x = STRTO (src, &end); if (src == end || errno == ERANGE) return -1; src = end; @@ -195,7 +180,7 @@ return 0; } - y = go_strto (src, &end); + y = STRTO (src, &end); if (src == end || errno == ERANGE) return -1; src = end; @@ -278,18 +263,20 @@ return; } - if (asize + bsize > 1e100 || asize < 1e-100 || bsize < 1e-100) { + if (asize + bsize > CONST(1e100) || + asize < CONST(1e-100) || + bsize < CONST(1e-100)) { // Avoid overflows and underflows by scaling both arguments // to sane sizes without any rounding errors. int ea, eb; - (void)SUFFIX(frexp) (asize, &ea); - a_re = SUFFIX(ldexp) (a_re, -ea); - a_im = SUFFIX(ldexp) (a_im, -ea); - - (void)SUFFIX(frexp) (bsize, &eb); - b_re = SUFFIX(ldexp) (b_re, -eb); - b_im = SUFFIX(ldexp) (b_im, -eb); + (void)UNSCALBN (asize, &ea); + a_re = SUFFIX(scalbn) (a_re, -ea); + a_im = SUFFIX(scalbn) (a_im, -ea); + + (void)UNSCALBN (bsize, &eb); + b_re = SUFFIX(scalbn) (b_re, -eb); + b_im = SUFFIX(scalbn) (b_im, -eb); e = ea - eb; } @@ -299,8 +286,8 @@ q_im = (a_im * b_re - a_re * b_im) / bmodsqr; if (e) { - q_re = SUFFIX(ldexp) (q_re, e); - q_im = SUFFIX(ldexp) (q_im, e); + q_re = SUFFIX(scalbn) (q_re, e); + q_im = SUFFIX(scalbn) (q_im, e); } SUFFIX(go_complex_init) (dst, q_re, q_im); @@ -353,10 +340,10 @@ { SUFFIX(GOQuad) d; - if (SUFFIX (fabs) (z->h) <= 0.5) + if (SUFFIX (fabs) (z->h) <= CONST(0.5)) return; - SUFFIX(go_quad_init) (&d, SUFFIX(floor) (z->h + 0.5)); + SUFFIX(go_quad_init) (&d, SUFFIX(round) (z->h)); SUFFIX(go_quad_sub) (z, z, &d); } @@ -367,8 +354,8 @@ DOUBLE wb, wa; int ea, eb, de; - (void)SUFFIX(frexp) (SUFFIX(go_quad_value) (&qa), &ea); - (void)SUFFIX(frexp) (b, &eb); + (void)UNSCALBN (SUFFIX(go_quad_value) (&qa), &ea); + (void)UNSCALBN (b, &eb); if (ea + eb <= 0) { /* |ab| <= 2 */ SUFFIX(go_quad_init) (&qfb, b); @@ -378,17 +365,17 @@ de = (ea - eb) / 2; if (de) { - DOUBLE f = SUFFIX(ldexp) (1, de); + DOUBLE f = SUFFIX(scalbn) (1, de); b *= f; qa.h /= f; qa.l /= f; } - wb = SUFFIX(floor) (b + 0.5); + wb = SUFFIX(round) (b); b -= wb; SUFFIX(go_quad_init) (&qfb, b); - wa = SUFFIX (floor) (SUFFIX(go_quad_value) (&qa) + 0.5); + wa = SUFFIX (round) (SUFFIX(go_quad_value) (&qa)); SUFFIX(go_quad_init) (&qfa, wa); SUFFIX(go_quad_sub) (&qfa, &qa, &qfa); @@ -467,8 +454,7 @@ *e = er; else { er = CLAMP (er, G_MININT, G_MAXINT); - qrr.h = SUFFIX(ldexp) (qrr.h, er); - qrr.l = SUFFIX(ldexp) (qrr.l, er); + SUFFIX(go_quad_scalbn) (&qrr, &qrr, er); } /* Compute result angle. */ @@ -610,8 +596,8 @@ DOUBLE x = SUFFIX(fabs) (src->re); DOUBLE y = SUFFIX(fabs) (src->im); DOUBLE lm = x > y - ? SUFFIX(log) (x) + 0.5 * SUFFIX(log1p) ((y / x) * (y / x)) - : SUFFIX(log) (y) + 0.5 * SUFFIX(log1p) ((x / y) * (x / y)); + ? SUFFIX(log) (x) + CONST(0.5) * SUFFIX(log1p) ((y / x) * (y / x)) + : SUFFIX(log) (y) + CONST(0.5) * SUFFIX(log1p) ((x / y) * (x / y)); DOUBLE a = SUFFIX(go_complex_angle) (src); SUFFIX(go_complex_init) (dst, lm, a); @@ -651,13 +637,13 @@ SUFFIX(go_complex_init) (dst, sr * cr / D, - 0.5 * SUFFIX(sinh) (2 * I) / D); + CONST(0.5) * SUFFIX(sinh) (2 * I) / D); } else { DOUBLE u = SUFFIX(exp) (-SUFFIX(fabs)(I)); DOUBLE C = 2 * u / (1 - u * u); DOUBLE S = C * C; DOUBLE D = 1 + cr * cr * S; - DOUBLE T = 1.0 / SUFFIX(tanh) (SUFFIX(fabs) (I)); + DOUBLE T = 1 / SUFFIX(tanh) (SUFFIX(fabs) (I)); SUFFIX(go_complex_init) (dst, sr * cr * S / D, (I < 0 ? -T : T) / D); @@ -665,3 +651,9 @@ } /* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-complex.h goffice-0.10.57/goffice/math/go-complex.h --- goffice-0.10.56/goffice/math/go-complex.h 2022-07-06 19:31:17.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-complex.h 2024-01-19 20:43:15.000000000 +0000 @@ -17,6 +17,13 @@ #define go_complexl GOComplexl #endif +#ifdef GOFFICE_WITH_DECIMAL64 +typedef struct { + _Decimal64 re, im; +} GOComplexD; +#define go_complexD GOComplexD +#endif + #include "go-math.h" /* ------------------------------------------------------------------------- */ @@ -24,7 +31,7 @@ GType go_complex_get_type (void); char *go_complex_to_string (GOComplex const *src, char const *reformat, - char const *imformat, char imunit); + char const *imformat, char imunit); int go_complex_from_string (GOComplex *dst, char const *src, char *imunit); @@ -64,7 +71,7 @@ GType go_complexl_get_type (void); char *go_complex_to_stringl (GOComplexl const *src, char const *reformat, - char const *imformat, char imunit); + char const *imformat, char imunit); int go_complex_from_stringl (GOComplexl *dst, char const *src, char *imunit); @@ -100,6 +107,49 @@ #endif /* GOFFICE_WITH_LONG_DOUBLE */ /* ------------------------------------------------------------------------- */ +/* _Decimal64 version */ + +#ifdef GOFFICE_WITH_DECIMAL64 + +GType go_complexD_get_type (void); + +char *go_complex_to_stringD (GOComplexD const *src, char const *reformat, + char const *imformat, char imunit); + +int go_complex_from_stringD (GOComplexD *dst, char const *src, char *imunit); + +void go_complex_to_polarD (_Decimal64 *mod, _Decimal64 *angle, GOComplexD const *src); +void go_complex_from_polarD (GOComplexD *dst, _Decimal64 mod, _Decimal64 angle); +void go_complex_from_polar_piD (GOComplexD *dst, _Decimal64 mod, _Decimal64 angle); +void go_complex_mulD (GOComplexD *dst, GOComplexD const *a, GOComplexD const *b); +void go_complex_divD (GOComplexD *dst, GOComplexD const *a, GOComplexD const *b); +void go_complex_powD (GOComplexD *dst, GOComplexD const *a, GOComplexD const *b); +void go_complex_powxD (GOComplexD *dst, _Decimal64 *e, + GOComplexD const *a, GOComplexD const *b); +void go_complex_sqrtD (GOComplexD *dst, GOComplexD const *src); +void go_complex_initD (GOComplexD *dst, _Decimal64 re, _Decimal64 im); +void go_complex_invalidD (GOComplexD *dst); +void go_complex_realD (GOComplexD *dst, _Decimal64 re); +int go_complex_real_pD (GOComplexD const *src); +int go_complex_zero_pD (GOComplexD const *src); +int go_complex_invalid_pD (GOComplexD const *src); +_Decimal64 go_complex_modD (GOComplexD const *src); +_Decimal64 go_complex_angleD (GOComplexD const *src); +_Decimal64 go_complex_angle_piD (GOComplexD const *src); +void go_complex_conjD (GOComplexD *dst, GOComplexD const *src); +void go_complex_scale_realD (GOComplexD *dst, _Decimal64 f); +void go_complex_addD (GOComplexD *dst, GOComplexD const *a, GOComplexD const *b); +void go_complex_subD (GOComplexD *dst, GOComplexD const *a, GOComplexD const *b); +void go_complex_expD (GOComplexD *dst, GOComplexD const *src); +void go_complex_lnD (GOComplexD *dst, GOComplexD const *src); +void go_complex_sinD (GOComplexD *dst, GOComplexD const *src); +void go_complex_cosD (GOComplexD *dst, GOComplexD const *src); +void go_complex_tanD (GOComplexD *dst, GOComplexD const *src); + + +#endif /* GOFFICE_WITH_DECIMAL64 */ + +/* ------------------------------------------------------------------------- */ G_END_DECLS diff -Nru goffice-0.10.56/goffice/math/go-cspline.c goffice-0.10.57/goffice/math/go-cspline.c --- goffice-0.10.56/goffice/math/go-cspline.c 2020-06-11 21:10:06.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-cspline.c 2024-01-19 20:43:15.000000000 +0000 @@ -26,6 +26,17 @@ #include "go-rangefunc.h" #include "go-cspline.h" +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifdef SKIP_THIS_PASS + +// Stub for the benefit of gtk-doc +GType INFIX(go_cspline,_get_type) (void); +GType INFIX(go_cspline,_get_type) (void) { return 0; } + +#else + /** * GOCSplineType: * @GO_CSPLINE_NATURAL: natural. @@ -34,40 +45,14 @@ * @GO_CSPLINE_CLAMPED: clamped. **/ -#ifndef DOUBLE - -#define DOUBLE double -#define SUFFIX(_n) _n - -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-cspline.c" -#undef DOUBLE -#undef SUFFIX - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#define LONG_DOUBLE - -#else -/* It appears that gtk-doc is too dumb to handle this file. Provide - a dummy type getter to make things work. */ -GType go_csplinel_get_type (void); -GType go_csplinel_get_type (void) { return G_TYPE_NONE; } -#endif - -#endif - /** - * go_cspline_init: + * go_cspline_init: (skip) * @x: the x values * @y: the y values * @n: the number of x and y values * @limits: how the limits must be treated, four values are allowed: * GO_CSPLINE_NATURAL: first and least second derivatives are 0. - * GO_CSPLINE_PARABOLIC: the curve will be a parabole arc outside of the limits. + * GO_CSPLINE_PARABOLIC: the curve will be a parabolic arc outside of the limits. * GO_CSPLINE_CUBIC: the curve will be cubic outside of the limits. * GO_CSPLINE_CLAMPED: the first and last derivatives are imposed. * @c0: the first derivative when using clamped splines, not used in the @@ -76,7 +61,7 @@ * other limit types. * * Creates a spline structure, and computes the coefficients associated with the - * polynoms. The ith polynome (between x[i-1] and x[i] is: + * polynomials. The ith polynomial (between x[i-1] and x[i] is: * y(x) = y[i-1] + (c[i-1] + (b[i-1] + a[i] * (x - x[i-1])) * (x - x[i-1])) * (x - x[i-1]) * where a[i-1], b[i-1], c[i-1], x[i-1] and y[i-1] are the corresponding * members of the new structure. @@ -90,7 +75,7 @@ { DOUBLE *d1, *d2, *d3, *d4, h; SUFFIX(GOCSpline) *sp; - double dx1 = 0., dy1 = 0., dx2 = 0., dy2 = 0., dxn1 = 0., dxn2 = 0.; + DOUBLE dx1 = 0., dy1 = 0., dx2 = 0., dy2 = 0., dxn1 = 0., dxn2 = 0.; int nm1, nm2, i, j, first, last; /* What is the minimum number of knots? Taking 3 at the moment */ @@ -113,12 +98,12 @@ /* --- COMPUTE FOR N-2 ROWS --- */ nm2 = n - 2; dx1 = x[1] - x[0]; - dy1 = (y[1] - y[0]) / dx1 * 3.0; + dy1 = (y[1] - y[0]) / dx1 * 3; for ( i = 1; i <= nm2; ++i ) { dx2 = x[i + 1] - x[i]; - dy2 = (y[i + 1] - y[i]) / dx2 * 3.0; + dy2 = (y[i + 1] - y[i]) / dx2 * 3; d1[i] = dx1; - d2[i] = 2.0 * (dx1 + dx2); + d2[i] = 2 * (dx1 + dx2); d3[i] = dx2; d4[i] = dy2 - dy1; dx1 = dx2; @@ -138,26 +123,26 @@ case GO_CSPLINE_CUBIC : /* cubic ends--s[1], s[n] are extrapolated */ dx1 = x[1] - x[0]; dx2 = x[2] - x[1]; - d2[1] = (dx1 + dx2) * (dx1 + 2.0 * dx2) / dx2; + d2[1] = (dx1 + dx2) * (dx1 + 2 * dx2) / dx2; d3[1] = (dx2 * dx2 - dx1 * dx1) / dx2; dxn2 = x[nm2] - x[nm2 - 1]; dxn1 = x[nm1] - x[nm2]; d1[nm2] = (dxn2 * dxn2 - dxn1 * dxn1) / dxn2; - d2[nm2] = (dxn1 + dxn2) * (dxn1 + 2.0 * dxn2) / dxn2; + d2[nm2] = (dxn1 + dxn2) * (dxn1 + 2 * dxn2) / dxn2; break; case GO_CSPLINE_CLAMPED : /* Derivative end conditions */ dx1 = x[1] - x[0]; dy1 = (y[1] - y[0]) / dx1; d1[0] = 0.0; - d2[0] = 2.0 * dx1; + d2[0] = 2 * dx1; d3[0] = dx1; - d4[0] = (dy1 - c0) * 3.0; + d4[0] = (dy1 - c0) * 3; dx1 = x[nm1] - x[nm2]; dy1 = (y[nm1] - y[nm2]) / dx1; d1[nm1] = dx1; - d2[nm1] = 2.0 * dx1; + d2[nm1] = 2 * dx1; d3[nm1] = 0.0; - d4[nm1] = (cn - dy1) * 3.0; + d4[nm1] = (cn - dy1) * 3; first = 1; last = n-1; break; } @@ -195,10 +180,10 @@ /* --- GENERATE THE COEFFICIENTS OF THE POLYNOMIALS --- */ for ( i = 0; i < nm1; ++i ) { h = x[i+1] - x[i]; - sp->a[i] = (d4[i + 1] - d4[i]) / (3.0 * h); + sp->a[i] = (d4[i + 1] - d4[i]) / (3 * h); sp->b[i] = d4[i]; sp->c[i] = ((y[i + 1] - y[i]) / h) - - ((2.0 * d4[i] + d4[i + 1]) * h / 3.0); + ((2 * d4[i] + d4[i + 1]) * h / 3); } g_free (d1); @@ -234,23 +219,15 @@ } GType -#ifdef LONG_DOUBLE -go_csplinel_get_type (void) -#else -go_cspline_get_type (void) -#endif +INFIX(go_cspline,_get_type) (void) { static GType t = 0; if (t == 0) { t = g_boxed_type_register_static ( -#ifdef LONG_DOUBLE - "GOCSplinel", -#else - "GOCSpline", -#endif - (GBoxedCopyFunc)SUFFIX(go_cspline_ref), - (GBoxedFreeFunc)SUFFIX(go_cspline_destroy)); + "GOCSpline" SUFFIX_STR, + (GBoxedCopyFunc)SUFFIX(go_cspline_ref), + (GBoxedFreeFunc)SUFFIX(go_cspline_destroy)); } return t; } @@ -430,18 +407,26 @@ j++; k = (j > 1)? j - 1: 0; start -= sp->x[k]; - sum = -start * (sp->y[k] + start * (sp->c[k] / 2. + start * (sp->b[k] / 3. + start * sp->a[k] / 4.))); + sum = -start * (sp->y[k] + start * (sp->c[k] / 2 + start * (sp->b[k] / 3 + start * sp->a[k] / 4))); while (j < jmax && end > sp->x[j]) { start = sp->x[j] - sp->x[k]; - sum += start * (sp->y[k] + start * (sp->c[k] / 2. + start * (sp->b[k] / 3. + start * sp->a[k] / 4.))); + sum += start * (sp->y[k] + start * (sp->c[k] / 2 + start * (sp->b[k] / 3 + start * sp->a[k] / 4))); start = sp->x[j]; j++; k = j - 1; } start = end - sp->x[k]; - sum += start * (sp->y[k] + start * (sp->c[k] / 2. + start * (sp->b[k] / 3. + start * sp->a[k] / 4.))); + sum += start * (sp->y[k] + start * (sp->c[k] / 2 + start * (sp->b[k] / 3 + start * sp->a[k] / 4))); res[i - 1] = sum; start = end; } return res; } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-cspline.h goffice-0.10.57/goffice/math/go-cspline.h --- goffice-0.10.56/goffice/math/go-cspline.h 2018-11-25 01:41:49.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-cspline.h 2024-01-19 20:43:15.000000000 +0000 @@ -45,7 +45,7 @@ GType go_cspline_get_type (void); GOCSpline *go_cspline_init (double const *x, double const *y, int n, - unsigned limits, double c0, double cn); + unsigned limits, double c0, double cn); void go_cspline_destroy (GOCSpline *sp); double go_cspline_get_value (GOCSpline const *sp, double x); double go_cspline_get_deriv (GOCSpline const *sp, double x); @@ -53,6 +53,8 @@ double *go_cspline_get_derivs (GOCSpline const *sp, double const *x, int n); double *go_cspline_get_integrals (GOCSpline const *sp, double const *x, int n); +// ----------------------------------------------------------------------------- + #ifdef GOFFICE_WITH_LONG_DOUBLE typedef struct _GOCSplinel GOCSplinel; struct _GOCSplinel { @@ -64,7 +66,7 @@ GType go_csplinel_get_type (void); GOCSplinel *go_cspline_initl (long double const *x, long double const *y, int n, - unsigned limits, long double a0, long double a1); + unsigned limits, long double c0, long double cn); void go_cspline_destroyl (GOCSplinel *sp); long double go_cspline_get_valuel (GOCSplinel const *sp, long double x); long double go_cspline_get_derivl (GOCSplinel const *sp, long double x); @@ -73,6 +75,30 @@ long double *go_cspline_get_integralsl (GOCSplinel const *sp, long double const *x, int n); #endif +// ----------------------------------------------------------------------------- + +#ifdef GOFFICE_WITH_DECIMAL64 +typedef struct _GOCSplineD GOCSplineD; +struct _GOCSplineD { + _Decimal64 const *x, *y; + _Decimal64 *a, *b, *c; + int n; + unsigned int ref_count; +}; + +GType go_csplineD_get_type (void); +GOCSplineD *go_cspline_initD (_Decimal64 const *x, _Decimal64 const *y, int n, + unsigned limits, _Decimal64 c0, _Decimal64 cn); +void go_cspline_destroyD (GOCSplineD *sp); +_Decimal64 go_cspline_get_valueD (GOCSplineD const *sp, _Decimal64 x); +_Decimal64 go_cspline_get_derivD (GOCSplineD const *sp, _Decimal64 x); +_Decimal64 *go_cspline_get_valuesD (GOCSplineD const *sp, _Decimal64 const *x, int n); +_Decimal64 *go_cspline_get_derivsD (GOCSplineD const *sp, _Decimal64 const *x, int n); +_Decimal64 *go_cspline_get_integralsD (GOCSplineD const *sp, _Decimal64 const *x, int n); +#endif + +// ----------------------------------------------------------------------------- + G_END_DECLS #endif diff -Nru goffice-0.10.56/goffice/math/go-decimal.c goffice-0.10.57/goffice/math/go-decimal.c --- goffice-0.10.56/goffice/math/go-decimal.c 1970-01-01 00:00:00.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-decimal.c 2024-01-23 14:39:02.000000000 +0000 @@ -0,0 +1,1671 @@ +/* + * go-decimal.c: Support for Decimal64 numbers + * + * Authors + * Morten Welinder + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +// Note: this file is deliberately "lgpl 2 or later", not just "2 or 3". + +// This file contains +// * libm functions for the _Decimal64 type using a "D" suffix +// - some have proper implementation +// - some have stubs that just defer to "double" versions +// * printf hooks for _Decimal64 and _Decimal128 +// - no intl support yet +// - no 'a' and 'A' formats +// - no grouping flag (single quote) +// - THIS IS INCOMPATIBLE WITH THE "quadmath" LIBRARY due to glibc +// deficiency. + +// Implementation status +// +// FUNCTION RANGE ACCURACY TESTING +// ------------------------------------------- +// acosD A * * +// acoshD A * * +// asinD A * * +// asinhD A * * +// atanD A * * +// atan2D A * B +// atanhD A A- * +// cbrtD A A- * +// ceilD A A A +// copysignD A A A +// cosD B C* * +// coshD A A- * +// erfD A * * +// erfcD A * * +// expD A * * +// expm1D A * * +// fabsD A A * +// floorD A A A +// frexpD A B - +// fmodD A A * +// hypotD A A - +// jnD B C* - +// ldexpD B B - +// lgammaD A A- * +// lgammaD_r A A- - +// log10D A A- * +// log2D A A- * +// log1pD A A- * +// logD A A- * +// modfD A A A +// nextafterD A A A +// powD B * B +// roundD A A A +// sinD B C* * +// sinhD A A- * +// scalbln A A A +// scalbn A A A +// sqrtD A A- * +// tanD B C* * +// tanhD A A- * +// truncD A A A +// ynD * C* - +// finiteD A A A +// isnanD A A A +// signbitD A A A +// strtoDd A A B +// (printf) A A - +// +// * Stub via double. Range:B, Accuracy:B + +#include +#include +#include +#include +#include +#include +#include +#include + +// --------------------------------------------------------------------------- + +#define DECIMAL64_BIAS (-398) +#define DECIMAL64_MAX_BIASED_EXP 369 +#define DECIMAL64_MIN_DEN 1e-398dd +#define DECIMAL64_MAX_MANT 9999999999999999ull + +#define DECIMAL128_BIAS (-6176) + +#define M_LN10D 2.3025850929940456840179914546843642076dd // log(10) +#define M_LG10D 3.32192809488736235dd // log_2(10) +#define M_LN2D 0.6931471805599453094dd // log(2) +#define M_SQRT2D 1.414213562373095dd // sqrt(2) + +// We assume bis format (and check for it during init) +#define decode64 decode64_bis +#define make64 make64_bis +#define decode128 decode128_bis + +enum { + CLS_NORMAL, + CLS_INVALID, // Treat as zero + CLS_NAN, + CLS_INF +}; + +// --------------------------------------------------------------------------- + +static char *decimal_point_str; + +static const char * +decimal_point (void) +{ + struct lconv *lc = localeconv (); + + if (lc->decimal_point == NULL || lc->decimal_point[0] == 0) + return "."; + + g_free (decimal_point_str); + decimal_point_str = g_locale_to_utf8 (lc->decimal_point, -1, + NULL, NULL, NULL); + if (decimal_point_str == NULL || decimal_point_str[0] == 0) + return "."; + + return decimal_point_str; +} + + +// --------------------------------------------------------------------------- + +// Decode a _Decimal64 assuming binary integer significant encoding +static inline int +decode64_bis (_Decimal64 const *args0, uint64_t *pmant, int *pp10, int *sign) +{ + uint64_t d64, mant; + int special = CLS_NORMAL, p10 = 0; + + memcpy (&d64, args0, sizeof(d64)); + + if (sign) *sign = (d64 >> 63); + + if (((d64 >> 59) & 15) == 15) { + special = ((d64 >> 58) & 1) ? CLS_NAN : CLS_INF; + } else { + if (((d64 >> 61) & 3) == 3) { + p10 = DECIMAL64_BIAS + ((d64 >> 51) & 0x3ff); + mant = (d64 & ((1ul << 51) - 1)) | (4ul << 51); + } else { + p10 = DECIMAL64_BIAS + ((d64 >> 53) & 0x3ff); + mant = d64 & ((1ul << 53) - 1); + } + if (mant > DECIMAL64_MAX_MANT) + special = CLS_INVALID; // Invalid (>= 10^16) + } + + if (pp10) *pp10 = (special ? 0 : p10); + if (pmant) *pmant = (special ? 0 : mant); + + return special; +} + +// Encode a (finite) _Decimal64 assuming binary integer significant encoding +static _Decimal64 +make64_bis (uint64_t mant, int e, int sign) +{ + uint64_t ue, u64; + _Decimal64 res; + + assert (mant <= DECIMAL64_MAX_MANT); + assert (e >= DECIMAL64_BIAS && e <= DECIMAL64_MAX_BIASED_EXP); + + ue = e - DECIMAL64_BIAS; + if (mant & ((uint64_t)1 << 53)) { + u64 = (mant ^ ((uint64_t)1 << 53)) | + (ue << 51) | + ((uint64_t)3 << 61) | + ((uint64_t)sign << 63); + } else { + u64 = mant | (ue << 53) | ((uint64_t)sign << 63); + } + + memcpy (&res, &u64, sizeof (res)); + return res; +} + +// Decode a _Decimal128 assuming binary integer significant encoding +static int +decode128_bis (_Decimal128 const *args0, uint64_t *pmantu, uint64_t *pmantl, + int *pp10, int *sign) +{ + uint64_t l64, u64, mantl, mantu; + int special = CLS_NORMAL, p10 = 0; + + // Hmm... Little endian, I hope + memcpy (&l64, (uint64_t const *)args0, sizeof(l64)); + memcpy (&u64, (uint64_t const *)args0 + 1, sizeof(u64)); + + if (sign) *sign = (u64 >> 63); + + if (((u64 >> 59) & 15) == 15) { + special = ((u64 >> 58) & 1) ? CLS_NAN : CLS_INF; + } else { + if (((u64 >> 61) & 3) == 3) { + p10 = DECIMAL128_BIAS + ((u64 >> 47) & 0x3fff); + mantu = (u64 & ((1ul << 47) - 1)) | (4ul << 47); + } else { + p10 = DECIMAL128_BIAS + ((u64 >> 49) & 0x3fff); + mantu = u64 & ((1ul << 49) - 1); + } + mantl = l64; + if (mantu > 0x1ed09bead87c0ull || + (mantu == 0x1ed09bead87c0ull && + mantl > 0x378d8e63ffffffffull)) + special = CLS_INVALID; // Invalid (>= 10^34) + } + + if (pp10) *pp10 = special ? 0 : p10; + if (pmantu) *pmantu = special ? 0 : mantu; + if (pmantl) *pmantl = special ? 0 : mantl; + + return special; +} + +static void +render128 (char *buffer, uint64_t u, uint64_t l) +{ + char tmp[8 * sizeof (u)]; + char *p = tmp + sizeof (tmp); + int len; + const uint64_t Md10 = (uint64_t)-1 / 10; // 1844674407370955161 + const unsigned Mr10 = (uint64_t)-1 % 10 + 1; // 6 + + while (u) { + unsigned u2 = u % 10; + unsigned l2 = l % 10; + unsigned d = (Mr10 * u2 + l2) % 10; + uint64_t v1 = (u2 * Md10) + (Mr10 * u2 + l2) / 10; + + u /= 10; + l /= 10; + l += v1; if (l < v1) u++; + + *--p = '0' + d; + } + + while (l >= 10) { + int d = l % 10; + *--p = '0' + d; + l /= 10; + } + + *--p = '0' + l; + + len = tmp + sizeof (tmp) - p; + memcpy (buffer, p, len); + buffer[len] = 0; +} + +static const uint64_t +u64_pow10_table[20] = { + 1ull, + 10ull, + 100ull, + 1000ull, + 10000ull, + 100000ull, + 1000000ull, + 10000000ull, + 100000000ull, + 1000000000ull, + 10000000000ull, + 100000000000ull, + 1000000000000ull, + 10000000000000ull, + 100000000000000ull, + 1000000000000000ull, + 10000000000000000ull, + 100000000000000000ull, + 1000000000000000000ull, + 10000000000000000000ull, +}; + + +static int +u64_digits (uint64_t x) +{ + int l2, l10; + + if (x == 0) + return 1; + + assert (sizeof (long) == sizeof (uint64_t)); + l2 = 63 - __builtin_clzl (x); + // log_10(2) is a hair bigger than 77/256 + l10 = l2 * 77 / 256; + + if (x >= u64_pow10_table[l10 + 1]) + l10++; + + return l10 + 1; +} + + +static int decimal64_modifier, decimal128_modifier; +static int decimal64_type, decimal128_type; + +static void +decimal64_va_arg (void *mem, va_list *ap) +{ + _Decimal64 d = va_arg(*ap, _Decimal64); + memcpy (mem, &d, sizeof(d)); +} + +static void +decimal128_va_arg (void *mem, va_list *ap) +{ + _Decimal128 d = va_arg(*ap, _Decimal128); + memcpy (mem, &d, sizeof(d)); +} + +static int +decimal_arginfo (const struct printf_info *info, size_t n, + int *argtypes, int *size) +{ + if (n > 0) { + if (info->user & decimal64_modifier) { + argtypes[0] = decimal64_type; + size[0] = sizeof (_Decimal64); + return 1; + } + if (info->user & decimal128_modifier) { + argtypes[0] = decimal128_type; + size[0] = sizeof (_Decimal128); + return 1; + } + } + + return -1; +} + +// Round decimal number in buf based on character in position ix. +// '0'..'4' round down, '5'..'9' round up. +// +// Returns new length which is normally ix, except +// * When ix is <= 0: 1 is returned, buffer is "0" +// * when rounding 9999|5 up getting 10000. +static int +do_round (char *buf, int ix, int *qoverflow) +{ + *qoverflow = 0; + if (ix < 0) { + ix = 0; + } else { + char rc = buf[ix]; + + if (rc >= '5') { + int i = ix - 1; + while (i >= 0 && (buf[i])++ == '9') { + buf[i] = '0'; + i--; + } + if (i == -1) { + buf[ix++] = '0'; + buf[0] = '1'; + *qoverflow = 1; + } + } + } + + if (ix == 0) + buf[ix++] = '0'; + return ix; +} + +static int +decimal_format (FILE *stream, const struct printf_info *info, + const void *const *args) +{ + char buffer[1024]; + int special, p10, sign; + int len = 0; + int qupper = (info->spec <= 'Z'); + char signchar; + const char *dot = decimal_point (); + int dotlen = strlen (dot); + + if (info->user & decimal64_modifier) { + _Decimal64 const *args0 = *(_Decimal64 **)(args[0]); + uint64_t mant; + special = decode64 (args0, &mant, &p10, &sign); + if (special == CLS_NORMAL) render128 (buffer, 0, mant); + } else if (info->user & decimal128_modifier) { + _Decimal128 const *args0 = *(_Decimal128 **)(args[0]); + uint64_t mantu, mantl; + special = decode128 (args0, &mantu, &mantl, &p10, &sign); + if (special == CLS_NORMAL) render128 (buffer, mantu, mantl); + } else { + // Not sure why this gets called on a regular "%f". The special + // return value of -2 to use default handler is not documented. + return -2; + } + + if (sign) + signchar = '-'; + else if (info->showsign) + signchar = '+'; + else if (info->space) + signchar = ' '; + else + signchar = 0; + + switch (special) { + case CLS_NORMAL: { + int estyle, fstyle, gstyle, prec; + + len = strlen (buffer); + + // We don't want a zero with scaling + if (len == 1 && buffer[0] == '0') + p10 = 0; + + // Default is 6. Avoid buffer overflow. + prec = info->prec; + if (prec < 0) prec = 6; + if (prec > 100) prec = 100; + + estyle = ((info->spec | 32) == 'e'); + fstyle = ((info->spec | 32) == 'f'); + gstyle = ((info->spec | 32) == 'g'); + + if (gstyle) { + int effp10 = p10 + (len - 1); + if (prec == 0) prec = 1; + if (effp10 < -4 || effp10 >= prec) { + estyle = 1; + prec--; + } else { + fstyle = 1; + prec -= effp10 + 1; + } + } + + overflow_to_estyle: + if (estyle) { + int decimals = len - 1, ap10; + p10 += decimals; + + if (decimals > prec) { + int cut = decimals - prec; + int qoverflow; + len = do_round (buffer, len - cut, &qoverflow); + if (qoverflow) { + // We overflowed 9999 into 10000 + len--; + p10++; + } + } else if (decimals < prec && !gstyle) { + int diff = prec - decimals; + memset (buffer + len, '0', diff); + len += diff; + } + + // For gstyle we should not have 0 at the end of the fractional part + while (gstyle && len > 1 && buffer[len - 1] == '0') + len--; + + if (prec && (len > 1 || info->alt)) { + memmove (buffer + 1 + dotlen, + buffer + 1, len - 1); + memcpy (buffer + 1, dot, dotlen); + len += dotlen; + } + + buffer[len++] = (qupper ? 'E' : 'e'); + buffer[len++] = (p10 >= 0 ? '+' : '-'); + ap10 = (p10 >= 0 ? p10 : -p10); + if (ap10 <= 9) buffer[len++] = '0'; + render128 (buffer + len, 0, ap10); + len += strlen (buffer + len); + } else if (fstyle) { + int decimals = 0; + + while (p10 < 0 && len > 1 && buffer[len - 1] == '0') { + buffer[--len] = 0; + p10++; + } + if (p10 < 0) decimals = -p10; + if (decimals > prec) { + int cut = decimals - prec; + int qoverflow; + len = do_round (buffer, len - cut, &qoverflow); + decimals = prec; + p10 += cut; + if (qoverflow) { + //p10++; + if (gstyle && decimals == 0) { + estyle = 1; + fstyle = 0; + goto overflow_to_estyle; + } + } + } + // For gstyle we should not have 0 at the end of the fractional part + while (gstyle && len > 1 && p10 < 0 && buffer[len - 1] == '0') + len--, p10++, decimals--; + + // Add 0 for large integers + while (p10 > 0) { + buffer[len++] = '0'; + p10--; + } + // Add 0 for extra decimals + while (decimals < prec && !gstyle) { + buffer[len++] = '0'; + decimals++; + } + + if (decimals > len) { + int diff = decimals - len; + memmove (buffer + diff + 1 + dotlen, + buffer, len); + memset (buffer, '0', diff + 1 + dotlen); + memcpy (buffer + 1, dot, dotlen); + len += diff + 1 + dotlen; + } else if (decimals > 0 || info->alt) { + int need0 = (decimals == len); + memmove (buffer + len - decimals + dotlen + need0, + buffer + len - decimals, + decimals); + if (need0) buffer[0] = '0'; + memcpy (buffer + len + need0 - decimals, + dot, dotlen); + len += dotlen + need0; + } + buffer[len] = 0; + } else { + // Shouldn't happen + buffer[0] = '?'; + len = 1; + } + break; + } + case CLS_NAN: + strcpy (buffer, (qupper ? "NAN" : "nan")); + len = 3; + break; + case CLS_INF: + strcpy (buffer, (qupper ? "INF" : "inf")); + len = 3; + break; + case CLS_INVALID: + buffer[0] = '0'; + len = 1; + p10 = 0; + break; + } + + if (signchar) len++; + + while (!info->left && len < info->width) { + len++; + putc (info->pad, stream); + } + if (signchar) putc (signchar, stream); + fputs (buffer, stream); + while (len < info->width) { + len++; + putc (' ', stream); + } + return len; +} + +static void +init_decimal_printf_support (void) +{ + decimal64_type = register_printf_type (decimal64_va_arg); + decimal128_type = register_printf_type (decimal128_va_arg); + +#define CAT(x,y) x ## y +#define WSTR(x) CAT(L,x) + decimal64_modifier = register_printf_modifier (WSTR (GO_DECIMAL64_MODIFIER)); + decimal128_modifier = register_printf_modifier (WSTR (GO_DECIMAL128_MODIFIER)); +#undef WSTR +#undef CAT + + register_printf_specifier ('f', decimal_format, decimal_arginfo); + register_printf_specifier ('F', decimal_format, decimal_arginfo); + register_printf_specifier ('e', decimal_format, decimal_arginfo); + register_printf_specifier ('E', decimal_format, decimal_arginfo); + register_printf_specifier ('g', decimal_format, decimal_arginfo); + register_printf_specifier ('G', decimal_format, decimal_arginfo); + // No 'a' and 'A' +} + +// --------------------------------------------------------------------------- + +inline int +isnanD (_Decimal64 x) +{ + return decode64 (&x, NULL, NULL, NULL) == CLS_NAN; +} + +inline int +finiteD (_Decimal64 x) +{ + return decode64 (&x, NULL, NULL, NULL) < CLS_NAN; +} + +inline int +signbitD (_Decimal64 x) +{ + int sign; + (void)decode64 (&x, NULL, NULL, &sign); + return sign; +} + +_Decimal64 +copysignD (_Decimal64 x, _Decimal64 y) +{ + if (signbitD (x) == signbitD (y)) + return x; + else + return -x; +} + +_Decimal64 +fabsD (_Decimal64 x) +{ + return signbitD (x) ? -x : x; +} + +static _Decimal64 +pow10D (int e) +{ + if (e < DECIMAL64_BIAS) + return 0; + if (e <= DECIMAL64_MAX_BIASED_EXP) + return make64 (1, e, 0); + if (e <= DECIMAL64_MAX_EXP) + return make64 (u64_pow10_table[e - DECIMAL64_MAX_BIASED_EXP], + DECIMAL64_MAX_BIASED_EXP, 0); + return (_Decimal64)INFINITY; +} + +_Decimal64 +nextafterD (_Decimal64 x, _Decimal64 y) +{ + int qadd, qeffadd, e, lm64, sign, special, sn; + uint64_t m64; + + special = decode64 (&x, &m64, &e, &sign); + if (special == CLS_NAN) + return x; + + if (x < y) + qadd = 1; + else if (x > y) + qadd = 0; + else + return y; // Either equal or y is NAN + + if (special == CLS_INF) + return copysignD (DECIMAL64_MAX, x); + + if (m64 == 0) { + _Decimal64 eps = DECIMAL64_MIN_DEN; + return qadd ? eps : -eps; + } + + // Scale mantissa as far up as we can, ie., to 16 digits unless that + // would cause the exponent to become too small. + lm64 = u64_digits (m64); + sn = MIN (DECIMAL64_DIG - lm64, e - DECIMAL64_BIAS); + m64 *= u64_pow10_table[sn]; + e -= sn; + + qeffadd = sign != qadd; + if (qeffadd) { + m64++; + if (m64 == DECIMAL64_MAX_MANT + 1) { + _Decimal64 r = pow10D (e + DECIMAL64_DIG); + return sign ? -r : r; + } + } else { + m64--; + if (m64 == DECIMAL64_MAX_MANT / 10 && e != DECIMAL64_BIAS) { + m64 = DECIMAL64_MAX_MANT; + e--; + } + } + + return make64 (m64, e, sign); +} + +// NOTE: THIS IS NOT A LOSSLESS OPERATION +_Decimal64 +ldexpD (_Decimal64 x, int e) +{ + if (x == 0 || !finiteD (x)) + return x; + + if (e > 1023) { + // Note: log2(DECIMAL64_MAX / DBL_MAX) =~ 252 + return x * (_Decimal64)ldexp(1, 300) * + (_Decimal64)ldexp(1, e - 300); + } else if (e < -1023) { + return x * (_Decimal64)ldexp(1, -300) * + (_Decimal64)ldexp(1, e + 300); + } else + return x * (_Decimal64)(ldexp(1, e)); +} + +// NOTE: THIS IS NOT A LOSSLESS OPERATION +_Decimal64 +frexpD (_Decimal64 x, int *e) +{ + _Decimal64 m, ax; + + if (x == 0 || !finiteD (x)) { + *e = 0; + return x; + } + + ax = fabsD (x); + + if (ax >= (_Decimal64)DBL_MAX) { + _Decimal64 p_2_300 = ldexp (1, 300); + m = frexpD (ax / p_2_300, e); + *e += 300; + } else if (ax <= (_Decimal64)DBL_MIN) { + _Decimal64 p_2_300 = ldexp (1, 300); + m = frexpD (ax * p_2_300, e); + *e -= 300; + } else + m = frexp (ax, e); + + return copysignD (m, x); +} + +// This is lossless (expect when going denormal or underflowing). +_Decimal64 +scalblnD (_Decimal64 x, long e) +{ + uint64_t mant; + int p10, sign; + int too_far = (DECIMAL64_MAX_EXP - DECIMAL64_MIN_EXP) + DECIMAL64_DIG; + + if (decode64 (&x, &mant, &p10, &sign) || mant == 0) + return x; + + p10 += CLAMP (e, -too_far, +too_far); + if (p10 > DECIMAL64_MAX_BIASED_EXP) { + int excess = p10 - DECIMAL64_MAX_BIASED_EXP; + int lmant = excess >= DECIMAL64_DIG ? DECIMAL64_DIG : u64_digits (mant); + if (lmant + excess > DECIMAL64_DIG) + return sign ? -(_Decimal64)INFINITY : (_Decimal64)INFINITY; + p10 = DECIMAL64_MAX_BIASED_EXP; + mant *= u64_pow10_table[excess]; + } else if (p10 < DECIMAL64_BIAS) { + int deficit = DECIMAL64_BIAS - p10; + if (deficit > DECIMAL64_DIG) // Strict ">" since to rounding can bring back 1 + return sign ? -0.dd : 0.dd; + else { + uint64_t f = u64_pow10_table[deficit]; + // Note: rounding ties away from zero + mant = (mant + f / 2) / f; + p10 = mant ? DECIMAL64_BIAS : 0; + } + } + + return make64 (mant, p10, sign); +} + +_Decimal64 +scalbnD (_Decimal64 x, int e) +{ + return scalblnD (x, e); +} + +_Decimal64 +unscalbnD (_Decimal64 x, int *e) +{ + int special, sign, p10, m10; + uint64_t mant; + + special = decode64 (&x, &mant, &p10, &sign); + switch (special) { + case CLS_INF: + case CLS_NAN: + *e = 0; + return x; + default: + break; + } + + if (mant == 0) { + *e = 0; + return sign ? -0.dd : 0.dd; + } + + m10 = u64_digits (mant); + p10 += m10; + *e = p10; + return make64 (mant, -m10, sign); +} + +static int +caseprefix (const unsigned char *us, const char *p) +{ + while (*p) { + if (*p != toupper (*us)) + return 0; + p++; + us++; + } + return 1; +} + +_Decimal64 +strtoDd (const char *s, char **end) +{ + uint64_t m = 0; + int sign = 0; + const unsigned char *us = (const unsigned char *)s; + int digits = 0; + int period = 0; + int scale = 0; + _Decimal64 res; + const char *dot = decimal_point (); + + while (isspace (*us)) + us++; + + if (*us == '-') + sign++, us++; + else if (*us == '+') + us++; + + if (!isdigit (*us) && !(g_str_has_prefix (us, dot) && isdigit (us[1]))) { + if (caseprefix (us, "INFINITY")) + res = INFINITY, us += 8; + else if (caseprefix (us, "INF")) + res = INFINITY, us += 3; + else if (caseprefix (us, "NAN")) + res = NAN, us += 3; + else { + if (end) *end = (char *)s; + return 0; + } + + if (end) *end = (char *)us; + return sign ? -res : res; + } + + while (isdigit (*us) || g_str_has_prefix (us, dot)) { + if (g_str_has_prefix (us, dot)) { + if (period) + break; + period = 1; + } else { + if (digits < DECIMAL64_DIG) { + m = 10 * m + (*us - '0'); + if (m) digits++; + if (period) scale--; + } else if (digits == DECIMAL64_DIG) { + if (*us >= '5') + m++; // Always round away from 0 + if (!period) scale++; + digits++; + } else { + if (!period) scale++; + } + } + us++; + } + + if (*us == 'e' || *us == 'E') { + int esign = 0; + int p10 = 0; + + if (us[1] == '-' && isdigit(us[2])) + us += 2, esign = 1; + else if (us[1] == '+' && isdigit(us[2])) + us += 2; + else if (isdigit (us[1])) + us++; + + while (isdigit (*us)) { + if (p10 < INT_MAX / 10 - 10) + p10 = p10 * 10 + (*us - '0'); + us++; + } + + scale += esign ? -p10 : p10; + } + + if (end) *end = (char *)us; + res = scalbnD (m, scale); + if (sign) res = -res; + return res; +} + +// --------------------------------------------------------------------------- + +_Decimal64 +floorD (_Decimal64 x) +{ + if (x < 0) + return -ceilD (-x); + if (x > 0) { + if (x < 1e15dd) { + _Decimal64 y = x - 0.5dd; + _Decimal64 C = 1e16dd - x; + _Decimal64 s = C + y; + return s - C; + } else + return x; + } else + return x; +} + +_Decimal64 +ceilD (_Decimal64 x) +{ + if (x < 0) + return -floorD (-x); + if (x > 0) { + _Decimal64 f = floorD (x); + return x == f ? f : f + 1; + } else + return x; +} + +_Decimal64 +roundD (_Decimal64 x) +{ + _Decimal64 const C = 1e15dd; + if (x < 0) + return -roundD (-x); + if (x > 0 && x < C) { + _Decimal64 s = C + x; + _Decimal64 r = s - C; + if (r - x == -0.5dd) + r += 1; // We don't want round-ties-to-even + return r; + } else + return x; +} + +_Decimal64 +truncD (_Decimal64 x) +{ + return x < 0 ? ceilD (x) : floorD (x); +} + +// --------------------------------------------------------------------------- + +_Decimal64 +lgammaD (_Decimal64 x) +{ + int sign; + return lgammaD_r (x, &sign); +} + +_Decimal64 +lgammaD_r (_Decimal64 x, int *signp) +{ + if (fabsD (x) <= (_Decimal64)DBL_MIN) { + *signp = x >= 0 ? +1 : -1; + return -logD (x); + } else if (finiteD (x) && x >= (_Decimal64)DBL_MAX) { + *signp = +1; + return x * logD (x); + } + // No need to handle overflow on the left as all large numbers + // are integers. + + return lgamma_r (x, signp); +} + + +_Decimal64 +erfD (_Decimal64 x) +{ + // No need to handle overflow because of |y|=1 horizontal tangents + if (fabsD (x) <= (_Decimal64)DBL_MIN) { + _Decimal64 f = 1.1283791670955125738961589dd; // 2/sqrt(Pi) + return x * f; + } else + return erf (x); +} + +_Decimal64 +erfcD (_Decimal64 x) +{ + // No need to handle overflow on the left because of y=2 horizontal tangent + // No need to handle overflow to the right because underflow already happened + // No need to handle underflow because erfc(0)=1 + return erfc (x); +} + +// --------------------------------------------------------------------------- + +_Decimal64 +sinhD (_Decimal64 x) +{ + // No need to handle overflow because result will overflow anyway + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + else + return sinh (x); +} + +_Decimal64 +asinhD (_Decimal64 x) +{ + _Decimal64 ax = fabsD (x); + if (ax <= (_Decimal64)DBL_MIN) + return x; + if (ax >= (_Decimal64)DBL_MAX) + return copysignD (logD (ax) + M_LN2D, x); + return asinh (x); +} + +_Decimal64 +coshD (_Decimal64 x) +{ + // No need to handle overflow because result will overflow anyway + // No need to handle underflow because cosh(0)=1 + return cosh (x); +} + +_Decimal64 +acoshD (_Decimal64 x) +{ + // No need to handle underflow because the domain is [1,inf[ + if (x >= (_Decimal64)DBL_MAX) + return logD (x) + M_LN2D; + return acosh (x); +} + +_Decimal64 +tanhD (_Decimal64 x) +{ + // No need to handle overflow because of horizontal tangents + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + else + return tanh (x); +} + +_Decimal64 +atanhD (_Decimal64 x) +{ + _Decimal64 ax = fabsD (x); + // No need to handle overflow because the domain is ]-1;+1[ + if (ax <= DECIMAL64_EPSILON) { + // x - x^3/3 + ... + return x; + } else if (ax > 0.9dd && ax < 1) { + _Decimal64 y = log1pD (2 * ax / (1 - ax)) / 2; + return copysignD (y, x); + } else + return atanh (x); +} + +// --------------------------------------------------------------------------- + +_Decimal64 +sinD (_Decimal64 x) +{ + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + // FIXME: need to handle large values. Going via "double" is no good. + return sin (x); +} + +_Decimal64 +cosD (_Decimal64 x) +{ + // No need to handle underflow as cos(0)=1. + // FIXME: need to handle large values. Going via "double" is no good. + return cos (x); +} + +_Decimal64 +tanD (_Decimal64 x) +{ + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + // FIXME: need to handle large values. Going via "double" is no good. + return tan (x); +} + +_Decimal64 +asinD (_Decimal64 x) +{ + // No need to handle overflow because domain is [1,1] + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + else + return asin (x); +} + +_Decimal64 +acosD (_Decimal64 x) +{ + // No need to handle overflow because domain is [1,1] + // No need to handle underflow because acos(0)=Pi/2 + return acos (x); +} + +_Decimal64 +atanD (_Decimal64 x) +{ + // No need to handle overflow because of horizontal tangents + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + else + return atan (x); +} + +_Decimal64 +atan2D (_Decimal64 y, _Decimal64 x) +{ + const _Decimal64 PI_1_4 = 0.7853981633974483dd; + const _Decimal64 PI_1_2 = 1.570796326794897dd; + const _Decimal64 PI_3_4 = 2.356194490192345dd; + int signx, signy, specialx, specialy; + uint64_t mantx, manty; + + specialy = decode64 (&y, &manty, NULL, &signy); + specialx = decode64 (&x, &mantx, NULL, &signx); + + if (specialy == CLS_NAN) return y; + if (specialx == CLS_NAN) return x; + + if (specialy == CLS_INF && specialx == CLS_INF) + return copysignD (signx ? PI_3_4 : PI_1_4, y); + else if (specialy == CLS_INF) + return copysignD (PI_1_2, y); + else if (manty == 0 || specialx == CLS_INF) + return copysignD (signx ? M_PID : 0.dd, y); + else if (mantx == 0) + return copysignD (PI_1_2, y); + + if (fabsD (y) >= 1e100dd || fabsD (x) >= 1e100dd) { + y = scalbnD (y, -100); + x = scalbnD (x, -100); + } else if (fabsD (y) <= 1e-100dd || fabsD (x) <= 1e-100dd) { + y = scalbnD (y, +100); + x = scalbnD (x, +100); + } + + return atan2 (y, x); +} + +// --------------------------------------------------------------------------- + +// negneg: return -NAN on negatives. +static _Decimal64 +log_helper (_Decimal64 x, int base) +{ + int special, sign, p2, p10, bits; + uint64_t mant; + _Decimal64 xm1; + double dx; + static const _Decimal64 res[64] = { + +0.dd, + +0.3010299956639812dd, + -0.3979400086720376dd, + -0.09691001300805641dd, + +0.2041199826559248dd, + -0.4948500216800940dd, + -0.1938200260161128dd, + +0.1072099696478684dd, + +0.4082399653118496dd, + -0.2907300390241692dd, + +0.01029995663981195dd, + +0.3113299523037931dd, + -0.3876400520322257dd, + -0.08661005636824446dd, + +0.2144199392957367dd, + -0.4845500650402821dd, + -0.1835200693763009dd, + +0.1175099262876803dd, + +0.4185399219516615dd, + -0.2804300823843573dd, + +0.02059991327962390dd, + +0.3216299089436051dd, + -0.3773400953924137dd, + -0.07631009972843251dd, + +0.2247198959355487dd, + -0.4742501084004701dd, + -0.1732201127364889dd, + +0.1278098829274923dd, + +0.4288398785914735dd, + -0.2701301257445453dd, + +0.03089986991943586dd, + +0.3319298655834171dd, + -0.3670401387526018dd, + -0.06601014308862056dd, + +0.2350198525753606dd, + -0.4639501517606582dd, + -0.1629201560966770dd, + +0.1381098395673042dd, + +0.4391398352312854dd, + -0.2598301691047334dd, + +0.04119982655924781dd, + +0.3422298222232290dd, + -0.3567401821127898dd, + -0.05571018644880861dd, + +0.2453198092151726dd, + -0.4536501951208462dd, + -0.1526201994568650dd, + +0.1484097962071162dd, + +0.4494397918710974dd, + -0.2495302124649214dd, + +0.05149978319905976dd, + +0.3525297788630410dd, + -0.3464402254729778dd, + -0.04541022980899665dd, + +0.2556197658549845dd, + -0.4433502384810343dd, + -0.1423202428170531dd, + +0.1587097528469281dd, + +0.4597397485109093dd, + -0.2392302558251095dd, + +0.06179973983887171dd, + +0.3628297355028529dd, + -0.3361402688331659dd, + -0.03511027316918470dd, + }; + + special = decode64 (&x, &mant, &p10, &sign); + switch (special) { + case CLS_NAN: + return x; + case CLS_INF: + if (!sign) + return x; + break; + default: + if (mant == 0) + return (_Decimal64)-INFINITY; + break; + } + + if (sign) + return base == 10 ? (_Decimal64)NAN : -(_Decimal64)NAN; + + xm1 = x - 1; + if (fabsD (xm1) < 0.25dd) { + // x - 1 was exact and has smaller magnitude than x, so use log1p + // This reduces _Decimal64-to-double rounding error greatly which + // is significant for x very near 1. + _Decimal64 lxm1 = log1p (xm1); + switch (base) { + default: + case 2: return lxm1 * 1.4426950408889634073599dd; // 1/log(2) + case 3: return lxm1; + case 10: return lxm1 * 0.434294481903251827651dd; // 1/log(10) + } + } + + while (mant % 10 == 0) { + mant /= 10; + p10++; + } + + p2 = 0; + while ((mant & 1) == 0) { + mant >>= 1; + p2++; + } + + while (base == 2 && p10 != 0 && mant % 5 == 0) { + mant /= 5; + p10++; + p2--; + } + + bits = 63 - __builtin_clzl (mant); + dx = ldexp (mant, -bits); + p2 += bits; + if (dx > 1.41) { + dx /= 2; + p2++; + } + + if (base == 2) { + return p2 + M_LG10D * p10 + (_Decimal64)(log2 (dx)); + } else { + p10 += (p2 * 77 + 128) / 256; + _Decimal64 residual = ((_Decimal64)(log10 (dx)) + res[p2]); + _Decimal64 l10 = p10 + residual; + return base == 10 ? l10 : l10 * M_LN10D; + } +} + +// Note: log10D(-42) = +NaN <-- inconsistent +_Decimal64 +log10D (_Decimal64 x) +{ + return log_helper (x, 10); +} + +// Note: log2D(-42) = -NaN +_Decimal64 +log2D (_Decimal64 x) +{ + return log_helper (x, 2); +} + + +// Note: logD(-42) = -NaN +_Decimal64 +logD (_Decimal64 x) +{ + return log_helper (x, 3); +} + +// Note: log1pD(-43) = -NaN +_Decimal64 +log1pD (_Decimal64 x) +{ + _Decimal64 ax = fabsD (x); + + if (ax < 1) { + // x - x^2/2 + ... so this is fine: + if (ax <= 0.01dd * (DECIMAL64_EPSILON * DECIMAL64_EPSILON)) + return x; + return log1p (x); + } else + return logD (x + 1); +} + +_Decimal64 +expD (_Decimal64 x) +{ + // No need to handle overflow because horizontal tangent (left) and overflow (right) + // No need to handle underflow because exp(0)=1 + return exp (x); +} + +_Decimal64 +expm1D (_Decimal64 x) +{ + // No need to handle overflow because horizontal tangent (left) and overflow (right) + if (fabsD (x) <= (_Decimal64)DBL_MIN) + return x; + else + return expm1 (x); +} + +// 1: even integer, 0: non-integer (including inf, nan), -1 odd integer +static int +isint (_Decimal64 x) +{ + int special, p10; + uint64_t mant; + + special = decode64 (&x, &mant, &p10, NULL); + switch (special) { + case CLS_NAN: + case CLS_INF: + return 0; + case CLS_INVALID: + return +1; + default: + break; + } + + if (mant == 0 || p10 > 0) + return 1; + if (p10) { + if (p10 <= -DECIMAL64_DIG || mant % u64_pow10_table[-p10]) + return 0; + mant /= u64_pow10_table[-p10]; + } + return 1 - ((mant & 1) << 1); +} + + + +_Decimal64 +powD (_Decimal64 x, _Decimal64 y) +{ + int qneg = 0, ysign; + _Decimal64 z; + + if (x == 1 || y == 0) + return 1; + + if (isnanD (x)) + return x; + if (isnanD (y)) + return y; + + ysign = signbitD (y); + if (x == 0) { + int yoddint = isint (y) < 0; + if (ysign) + return yoddint ? copysignD (INFINITY, x) : (_Decimal64)INFINITY; + else + return yoddint ? x : 0; + } + + if (!finiteD (y)) { + if (x == -1) + return 1; + if (fabsD (x) < 1) + return ysign ? (_Decimal64)INFINITY : 0.dd; + else + return ysign ? 0.dd : (_Decimal64)INFINITY; + } + + if (x == -(_Decimal64)INFINITY) { + int yoddint = isint (y) < 0; + if (ysign) { + return yoddint ? -0.dd : +0.dd; + } else { + return yoddint ? -(_Decimal64)INFINITY : +(_Decimal64)INFINITY; + } + } + + if (x == (_Decimal64)INFINITY) { + return (ysign ? 0.dd : (_Decimal64)INFINITY); + } + + if (x == 10 && isint (y) && fabsD (y) < INT_MAX) + return pow10D ((int)y); + + if (x < 0) { + int qint = isint (y); + if (!qint) + return NAN; + qneg = qint < 0; + x = -x; + } + + z = pow (x, y); + return qneg ? -z : z; +} + +_Decimal64 +modfD (_Decimal64 x, _Decimal64 *y) +{ + if (!finiteD (x)) { + *y = x; + return isnanD (x) ? x : copysignD (0, x); + } + + *y = truncD (x); + return copysignD (x - *y, x); +} + +_Decimal64 +fmodD (_Decimal64 x, _Decimal64 y) +{ + int specialx, specialy, signx, signy, p10x, p10y; + uint64_t mantx, manty; + const uint64_t min_normal_mant = (DECIMAL64_MAX_MANT + 1) / 10; + + specialx = decode64 (&x, &mantx, &p10x, &signx); + specialy = decode64 (&y, &manty, &p10y, &signy); + + if (specialx >= CLS_NAN || specialy == CLS_NAN || (manty == 0 && specialy != CLS_INF)) + return copysignD (NAN, x); + if (mantx == 0 || specialy == CLS_INF) + return x; + + // At this point both x and y are finite and non-zero + + while (mantx < min_normal_mant) { + mantx *= 10; + p10x--; + } + while (manty < min_normal_mant) { + manty *= 10; + p10y--; + } + + while (p10x >= p10y) { + uint8_t q; + uint64_t qy; + + if (manty > mantx) { + if (p10x == p10y) + break; + mantx *= 10; + p10x--; + } + + q = mantx / manty; + qy = q * manty; + mantx -= qy; + if (mantx == 0) + return signx ? -0.dd : 0.dd; + while (mantx < min_normal_mant) { + mantx *= 10; + p10x--; + } + } + + if (p10x < DECIMAL64_BIAS) + return copysignD (scalbnD (mantx, p10x), x); + return make64 (mantx, p10x, signx); +} + +_Decimal64 +sqrtD (_Decimal64 x) +{ + int s = 0; + + if (x < 0) + return -(_Decimal64)NAN; + if (x == 0 || !finiteD (x)) + return x; + + if (x <= (_Decimal64)DBL_MIN) { + x = scalbnD (x, 300); + s = -150; + } else if (x >= (_Decimal64)DBL_MAX) { + x = scalbnD (x, -300); + s = +150; + } + + x = sqrt (x); + // We could do a newton step here. + + x = scalbnD (x, s); + return x; +} + +_Decimal64 +cbrtD (_Decimal64 x) +{ + _Decimal64 ax; + int s = 0; + + if (x == 0 || !finiteD (x)) + return x; + + ax = fabsD (x); + if (ax <= (_Decimal64)DBL_MIN) { + x = scalbnD (x, 300); + s = -100; + } else if (ax >= (_Decimal64)DBL_MAX) { + x = scalbnD (x, -300); + s = 100; + } + + x = cbrt (x); + // We could do a newton step here. + + return scalbnD (x, s); +} + +_Decimal64 +hypotD (_Decimal64 x, _Decimal64 y) +{ + int specialx, specialy; + uint64_t mantx, manty; + _Decimal64 r, s; + const _Decimal64 SQRT2P1_HI = 2.414213562373095dd; + const _Decimal64 SQRT2P1_LO = 4.880168872420970e-17dd; // Extra "0" between the two + + specialx = decode64 (&x, &mantx, NULL, NULL); + specialy = decode64 (&y, &manty, NULL, NULL); + + if (specialx == CLS_INF || specialy == CLS_INF) + return (_Decimal64)INFINITY; + if (specialx == CLS_NAN || specialy == CLS_NAN) + return (_Decimal64)NAN; // Always +nan + + x = fabsD (x); + y = fabsD (y); + if (mantx == 0) + return y; + if (manty == 0) + return x; + + if (y > x) { + _Decimal64 z = x; + x = y; + y = z; + } + + r = x - y; + if (r <= y) { + r = r / y; + s = r * (r + 2); + r = ((s / (M_SQRT2D + sqrtD (2 + s)) + r) + SQRT2P1_LO) + SQRT2P1_HI; + } else { + r = x / y; + r = r + sqrtD (r * r + 1); + } + + return (y / r) + x; +} + +// --------------------------------------------------------------------------- + +_Decimal64 +jnD (int n, _Decimal64 x) +{ + if ((n == 1 || n == -1) && fabsD (x) <= (_Decimal64)DBL_MIN) + return x / (2 * n); + // No need to handle other underflows + + // FIXME: need to handle large values. Going via "double" is no good. + + return jn (n, x); +} + +_Decimal64 +ynD (int n, _Decimal64 x) +{ + // FIXME: need to handle small and large numbers. + return yn (n, x); +} + +// --------------------------------------------------------------------------- + +void +_go_decimal_init (void) +{ + // Test number big enough to have only one representation (but still + // subject to two different encodings) + _Decimal64 const x = 1234567890123456.dd; + uint64_t const expected = 0x31c462d53c8abac0ull; + uint64_t u64; + + memcpy (&u64, &x, sizeof (u64)); + if (sizeof (u64) != 8 || u64 != expected) { + // Is this fails, Decimal64 is probably dpd encoded. + // (or we have really weird endianess going on) + g_printerr ("Decimal64 numbers are not bis encoded.\n"); + g_printerr ("(Got x%lx, expected 0x%lx)\n", u64, expected); + abort (); + } + + init_decimal_printf_support (); +} + +void +_go_decimal_shutdown (void) +{ + g_free (decimal_point_str); + decimal_point_str = NULL; +} + +// --------------------------------------------------------------------------- diff -Nru goffice-0.10.56/goffice/math/go-decimal.h goffice-0.10.57/goffice/math/go-decimal.h --- goffice-0.10.56/goffice/math/go-decimal.h 1970-01-01 00:00:00.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-decimal.h 2024-01-19 20:43:15.000000000 +0000 @@ -0,0 +1,103 @@ +#ifndef GO_DECIMAL_H__ +#define GO_DECIMAL_H__ + +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +G_BEGIN_DECLS + +/* ------------------------------------------------------------------------- */ + +#define GO_DECIMAL64_MODIFIER "W" +#define GO_DECIMAL128_MODIFIER "WL" + +#define DECIMAL64_MIN 1e-383dd +#define DECIMAL64_MAX 9.999999999999999e384dd +#define DECIMAL64_MAX_EXP 384 +#define DECIMAL64_MIN_EXP (-383) +#define DECIMAL64_EPSILON 1e-15dd +#define DECIMAL64_DIG 16 +#define DECIMAL64_MANT_DIG 16 + +#define M_PID 3.141592653589793dd + +#ifndef __GI_SCANNER__ +// Disable introspection for this. The names clash with many go_foo +// functions. + +_Decimal64 acosD (_Decimal64 x); +_Decimal64 acoshD (_Decimal64 x); +_Decimal64 asinD (_Decimal64 x); +_Decimal64 asinhD (_Decimal64 x); +_Decimal64 atanD (_Decimal64 x); +_Decimal64 atan2D (_Decimal64 x, _Decimal64 y); +_Decimal64 atanhD (_Decimal64 x); +_Decimal64 cbrtD (_Decimal64 x); +_Decimal64 ceilD (_Decimal64 x); +_Decimal64 copysignD (_Decimal64 x, _Decimal64 y); +_Decimal64 cosD (_Decimal64 x); +_Decimal64 coshD (_Decimal64 x); +_Decimal64 erfD (_Decimal64 x); +_Decimal64 erfcD (_Decimal64 x); +_Decimal64 expD (_Decimal64 x); +_Decimal64 expm1D (_Decimal64 x); +_Decimal64 fabsD (_Decimal64 x); +_Decimal64 floorD (_Decimal64 x); +_Decimal64 frexpD (_Decimal64 x, int *e); +_Decimal64 fmodD (_Decimal64 x, _Decimal64 y); +_Decimal64 hypotD (_Decimal64 x, _Decimal64 y); +_Decimal64 jnD (int n, _Decimal64 x); +_Decimal64 ldexpD (_Decimal64 x, int e); +_Decimal64 lgammaD (_Decimal64 x); +_Decimal64 lgammaD_r (_Decimal64 x, int *signp); +_Decimal64 log10D (_Decimal64 x); +_Decimal64 log1pD (_Decimal64 x); +_Decimal64 log2D (_Decimal64 x); +_Decimal64 logD (_Decimal64 x); +_Decimal64 modfD (_Decimal64 x, _Decimal64 *y); +_Decimal64 nextafterD (_Decimal64 x, _Decimal64 y); +_Decimal64 powD (_Decimal64 x, _Decimal64 y); +_Decimal64 roundD (_Decimal64 x); +_Decimal64 sinD (_Decimal64 x); +_Decimal64 sinhD (_Decimal64 x); +_Decimal64 scalblnD (_Decimal64 x, long e); +_Decimal64 scalbnD (_Decimal64 x, int e); +_Decimal64 sqrtD (_Decimal64 x); +_Decimal64 tanD (_Decimal64 x); +_Decimal64 tanhD (_Decimal64 x); +_Decimal64 truncD (_Decimal64 x); +_Decimal64 unscalbnD (_Decimal64 x, int *e); +_Decimal64 ynD (int n, _Decimal64 x); +int finiteD (_Decimal64 x); +int isnanD (_Decimal64 x); +int signbitD (_Decimal64 x); + +_Decimal64 strtoDd (const char *s, char **end); + +#endif + +/* private */ +void _go_decimal_init (void); +void _go_decimal_shutdown (void); + +/* ------------------------------------------------------------------------- */ + +G_END_DECLS + +#endif /* GO_DECIMAL_H__ */ diff -Nru goffice-0.10.56/goffice/math/go-distribution.c goffice-0.10.57/goffice/math/go-distribution.c --- goffice-0.10.56/goffice/math/go-distribution.c 2016-09-13 23:51:43.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-distribution.c 2024-01-19 20:43:15.000000000 +0000 @@ -28,29 +28,16 @@ #include #include -#ifndef DOUBLE - -#define DOUBLE double -#define SUFFIX(_n) _n - -#define DISTRIBUTION_FIRST_PATH -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-distribution.c" -#undef DISTRIBUTION_FIRST_PATH -#undef DOUBLE -#undef SUFFIX - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#endif -#define DISTRIBUTION_LAST_PATH - -#endif - -#ifdef DISTRIBUTION_FIRST_PATH +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS + +#ifdef DEFINE_COMMON + +// The scale and location are always double. Maybe reconsider that. +#define DIST_SCALE ((DOUBLE)(dist->scale)) +#define DIST_LOCATION ((DOUBLE)(dist->location)) enum { DIST_PROP_0, @@ -69,7 +56,7 @@ * @GO_DISTRIBUTION_INVALID: (skip) **/ -static struct +static const struct { GODistributionType type; char const *name; @@ -81,12 +68,26 @@ {GO_DISTRIBUTION_LOGNORMAL, N_("Lognormal")} }; -char const *go_distribution_type_to_string (GODistributionType type) +/** + * go_distribution_type_to_string: + * @type: distribution type to query + * + * Returns: an untranslated name of the distribution. + */ +char const * +go_distribution_type_to_string (GODistributionType type) { return DistributionTypes[type].name; } -GODistributionType go_distribution_type_from_string (char const *name) +/** + * go_distribution_type_from_string: + * @name: untranslated name of distribution + * + * Returns: type of distribution + */ +GODistributionType +go_distribution_type_from_string (char const *name) { int i = -1; while (++i < GO_DISTRIBUTION_MAX) @@ -108,17 +109,47 @@ GODistributionType dist_type; double (*get_density) (GODistribution *dist, double x); - double (*get_cumulative) (GODistribution *dist, double x); + double (*get_cumulative) (GODistribution *dist, gboolean lower_tail, double x); double (*get_ppf) (GODistribution *dist, double x); #ifdef GOFFICE_WITH_LONG_DOUBLE long double (*get_densityl) (GODistribution *dist, long double x); - long double (*get_cumulativel) (GODistribution *dist, long double x); + long double (*get_cumulativel) (GODistribution *dist, gboolean lower_tail, long double x); long double (*get_ppfl) (GODistribution *dist, long double x); #endif +#ifdef GOFFICE_WITH_DECIMAL64 + _Decimal64 (*get_densityD) (GODistribution *dist, _Decimal64 x); + _Decimal64 (*get_cumulativeD) (GODistribution *dist, gboolean lower_tail, _Decimal64 x); + _Decimal64 (*get_ppfD) (GODistribution *dist, _Decimal64 x); +#endif } GODistributionClass; +#define SET_HANDLERS_D(K,PRE) \ + (K)->get_density = PRE ## _get_density; \ + (K)->get_cumulative = PRE ## _get_cumulative; \ + (K)->get_ppf = PRE ## _get_ppf; +#ifdef GOFFICE_WITH_LONG_DOUBLE +#define SET_HANDLERS_LD(K,PRE) \ + (K)->get_densityl = PRE ## _get_densityl; \ + (K)->get_cumulativel = PRE ## _get_cumulativel; \ + (K)->get_ppfl = PRE ## _get_ppfl; +#else +#define SET_HANDLERS_LD(K,PRE) (void)0 +#endif +#ifdef GOFFICE_WITH_DECIMAL64 +#define SET_HANDLERS_D64(K,PRE) \ + (K)->get_densityD = PRE ## _get_densityD; \ + (K)->get_cumulativeD = PRE ## _get_cumulativeD; \ + (K)->get_ppfD = PRE ## _get_ppfD; +#else +#define SET_HANDLERS_D64(K,PRE) (void)0 +#endif + + +#define SET_HANDLERS(K,PRE) do { SET_HANDLERS_D(K,PRE); SET_HANDLERS_LD(K,PRE); SET_HANDLERS_D64(K,PRE); } while (0) + + static void go_distribution_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) @@ -209,7 +240,7 @@ GValue value = { 0 }; g_value_init (&value, prop_type); - g_object_get_property (G_OBJECT (dist), props[n]->name, &value); + g_object_get_property (G_OBJECT (dist), props[n]->name, &value); /* No need to save default values */ if (g_param_value_defaults (props[n], &value)) { @@ -225,6 +256,8 @@ case G_TYPE_UINT: case G_TYPE_LONG: case G_TYPE_ULONG: + case G_TYPE_INT64: + case G_TYPE_UINT64: case G_TYPE_FLOAT: case G_TYPE_DOUBLE: case G_TYPE_ENUM: @@ -258,13 +291,16 @@ { GODistribution *dist = GO_DISTRIBUTION (gp); while (*attrs) { - if (!strcmp ((char const*) *attrs, "name") || !strcmp ((char const*) *attrs, "type")); - else if (!strcmp ((char const*) *attrs, "location")) - dist->location = g_strtod (attrs[1], NULL); - else if (!strcmp ((char const*) *attrs, "scale")) - dist->scale = g_strtod (attrs[1], NULL); + const char *attr = (const char *)(attrs[0]); + const char *val = (const char *)(attrs[1]); + if (!strcmp (attr, "name") || !strcmp (attr, "type")) + ; // Nothing + else if (!strcmp (attr, "location")) + dist->location = g_ascii_strtod (val, NULL); + else if (!strcmp (attr, "scale")) + dist->scale = g_ascii_strtod (val, NULL); else { - GParamSpec *spec = g_object_class_find_property (G_OBJECT_GET_CLASS (dist), *attrs); + GParamSpec *spec = g_object_class_find_property (G_OBJECT_GET_CLASS (dist), attr); if (spec == NULL) g_warning ("unknown property `%s' for class `%s'", *attrs, G_OBJECT_TYPE_NAME (gp)); @@ -274,8 +310,8 @@ case G_TYPE_DOUBLE: { GValue value = {0}; g_value_init (&value, G_TYPE_DOUBLE); - g_value_set_double (&value, g_strtod (attrs[1], NULL)); - g_object_set_property (G_OBJECT (dist), *attrs, &value); + g_value_set_double (&value, g_ascii_strtod (val, NULL)); + g_object_set_property (G_OBJECT (dist), attr, &value); g_value_unset (&value); break; } @@ -308,109 +344,98 @@ dist->scale = scale; } -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* DEFINE_COMMON */ DOUBLE -SUFFIX (go_distribution_get_density) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_density) (GODistribution *dist, DOUBLE x) { GODistributionClass *go_dist_klass; - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_density) != NULL) - return go_dist_klass->SUFFIX (get_density) (dist, x); - return SUFFIX (go_nan); + if (go_dist_klass->SUFFIX(get_density) != NULL) + return go_dist_klass->SUFFIX(get_density) (dist, x); + + return SUFFIX(go_nan); } DOUBLE -SUFFIX (go_distribution_get_cumulative) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_cumulative) (GODistribution *dist, DOUBLE x) { GODistributionClass *go_dist_klass; - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_cumulative) != NULL) - return go_dist_klass->SUFFIX (get_cumulative) (dist, x); - return SUFFIX (go_nan); + if (go_dist_klass->SUFFIX(get_cumulative) != NULL) + return go_dist_klass->SUFFIX(get_cumulative) (dist, TRUE, x); + + return SUFFIX(go_nan); } DOUBLE -SUFFIX (go_distribution_get_ppf) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_ppf) (GODistribution *dist, DOUBLE x) { GODistributionClass *go_dist_klass; - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_ppf) != NULL) - return go_dist_klass->SUFFIX (get_ppf) (dist, x); - return SUFFIX (go_nan); + if (go_dist_klass->SUFFIX(get_ppf) != NULL) + return go_dist_klass->SUFFIX(get_ppf) (dist, x); + + return SUFFIX(go_nan); } DOUBLE -SUFFIX (go_distribution_get_hazard) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_hazard) (GODistribution *dist, DOUBLE x) { - GODistributionClass *go_dist_klass; + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); - - go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_density) != NULL && - go_dist_klass->SUFFIX (get_cumulative) != NULL) - return go_dist_klass->SUFFIX (get_density) (dist, x) / - (1. - go_dist_klass->SUFFIX (get_cumulative) (dist, x)); - return SUFFIX (go_nan); + return SUFFIX(go_distribution_get_density) (dist, x) / + SUFFIX(go_distribution_get_survival) (dist, x); } DOUBLE -SUFFIX (go_distribution_get_cumulative_hazard) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_cumulative_hazard) (GODistribution *dist, DOUBLE x) { - GODistributionClass *go_dist_klass; - - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); - go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_cumulative) != NULL) - return SUFFIX (log) (1. - go_dist_klass->SUFFIX (get_cumulative) (dist, x)); - return SUFFIX (go_nan); + return -SUFFIX(log) (SUFFIX(go_distribution_get_survival) (dist, x)); } DOUBLE -SUFFIX (go_distribution_get_survival) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_survival) (GODistribution *dist, DOUBLE x) { GODistributionClass *go_dist_klass; - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_cumulative) != NULL) - return 1. - go_dist_klass->SUFFIX (get_cumulative) (dist, x); - return SUFFIX (go_nan); + if (go_dist_klass->SUFFIX(get_cumulative) != NULL) + return go_dist_klass->SUFFIX(get_cumulative) (dist, FALSE, x); + + return SUFFIX(go_nan); } DOUBLE -SUFFIX (go_distribution_get_inverse_survival) (GODistribution *dist, DOUBLE x) +SUFFIX(go_distribution_get_inverse_survival) (GODistribution *dist, DOUBLE x) { - GODistributionClass *go_dist_klass; + g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX(go_nan)); + g_return_val_if_fail (x >= 0 && x <= 1, SUFFIX(go_nan)); - g_return_val_if_fail (GO_DISTRIBUTION (dist), SUFFIX (go_nan)); - - go_dist_klass = GO_DISTRIBUTION_GET_CLASS (dist); - if (go_dist_klass->SUFFIX (get_ppf) != NULL) - return 1. - go_dist_klass->SUFFIX (get_ppf) (dist, x); - return SUFFIX (go_nan); + return SUFFIX(go_distribution_get_ppf) (dist, 1 - x); } /*****************************************************************************/ /* Normal distribution */ /*****************************************************************************/ -#ifdef DISTRIBUTION_FIRST_PATH + +#ifdef DEFINE_COMMON typedef struct { GODistribution base; - } GODistNormal; #define GO_TYPE_DIST_NORMAL (go_dist_normal_get_type ()) @@ -421,62 +446,54 @@ typedef GODistributionClass GODistNormalClass; -#endif /* DISTRIBUTION_FIRST_PATH */ +#endif /* DEFINE_COMMON */ static DOUBLE -SUFFIX (go_normal_get_density) (GODistribution *dist, DOUBLE x) +SUFFIX(go_normal_get_density) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_dnorm) (x, dist->location, dist->scale, FALSE); + return SUFFIX(go_dnorm) (x, DIST_LOCATION, DIST_SCALE, FALSE); } static DOUBLE -SUFFIX (go_normal_get_cumulative) (GODistribution *dist, DOUBLE x) +SUFFIX(go_normal_get_cumulative) (GODistribution *dist, gboolean lower_tail, DOUBLE x) { - return SUFFIX (go_pnorm) (x, dist->location, dist->scale, TRUE, FALSE); + return SUFFIX(go_pnorm) (x, DIST_LOCATION, DIST_SCALE, lower_tail, FALSE); } static DOUBLE -SUFFIX (go_normal_get_ppf) (GODistribution *dist, DOUBLE x) +SUFFIX(go_normal_get_ppf) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_qnorm) (x, dist->location, dist->scale, TRUE, FALSE); + return SUFFIX(go_qnorm) (x, DIST_LOCATION, DIST_SCALE, TRUE, FALSE); } -#ifdef DISTRIBUTION_LAST_PATH +#if LAST_INCLUDE_PASS static void -go_dist_normal_class_init (GObjectClass *klass) +go_dist_normal_init (GODistribution *dist) { - GODistributionClass *dist_klass = (GODistributionClass *) klass; - dist_klass->dist_type = GO_DISTRIBUTION_NORMAL; - dist_klass->get_density = go_normal_get_density; - dist_klass->get_cumulative = go_normal_get_cumulative; - dist_klass->get_ppf = go_normal_get_ppf; -#ifdef GOFFICE_WITH_LONG_DOUBLE - dist_klass->get_densityl = go_normal_get_densityl; - dist_klass->get_cumulativel = go_normal_get_cumulativel; - dist_klass->get_ppfl = go_normal_get_ppfl; -#endif } static void -go_dist_normal_init (GODistribution *dist) +go_dist_normal_class_init (GObjectClass *klass) { + GODistributionClass *dist_klass = (GODistributionClass *) klass; + dist_klass->dist_type = GO_DISTRIBUTION_NORMAL; + SET_HANDLERS(dist_klass, go_normal); } GSF_CLASS (GODistNormal, go_dist_normal, go_dist_normal_class_init, go_dist_normal_init, GO_TYPE_DISTRIBUTION) -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* LAST_INCLUDE_PASS */ /*****************************************************************************/ /* Uniform distribution */ /*****************************************************************************/ -#ifdef DISTRIBUTION_FIRST_PATH +#ifdef DEFINE_COMMON typedef struct { GODistribution base; - } GODistUniform; #define GO_TYPE_DIST_UNIFORM (go_dist_uniform_get_type ()) @@ -487,48 +504,43 @@ typedef GODistributionClass GODistUniformClass; -#endif /* DISTRIBUTION_FIRST_PATH */ +#endif /* DEFINE_COMMON */ static DOUBLE -SUFFIX (go_uniform_get_density) (GODistribution *dist, DOUBLE x) +SUFFIX(go_uniform_get_density) (GODistribution *dist, DOUBLE x) { - x = (x - dist->location) / dist->scale; - return (x >= 0. && x < 1.)? SUFFIX (1.) / dist->scale: SUFFIX (0.); + x = (x - DIST_LOCATION) / DIST_SCALE; + return (x >= 0 && x < 1) + ? CONST (1.) / DIST_SCALE + : CONST (0.); } static DOUBLE -SUFFIX (go_uniform_get_cumulative) (GODistribution *dist, DOUBLE x) +SUFFIX(go_uniform_get_cumulative) (GODistribution *dist, gboolean lower_tail, DOUBLE x) { - x = (x - dist->location) / dist->scale; - if (x < 0.) - return SUFFIX (0.); - else if (x >= 1.) - return SUFFIX (1.); + x = (x - DIST_LOCATION) / DIST_SCALE; + if (x < 0) + return lower_tail ? 0 : 1; + else if (x >= 1) + return lower_tail ? 1 : 0; else - return x; + return lower_tail ? x : 1 - x; } static DOUBLE -SUFFIX (go_uniform_get_ppf) (GODistribution *dist, DOUBLE x) +SUFFIX(go_uniform_get_ppf) (GODistribution *dist, DOUBLE x) { - return x * dist->scale + dist->location; + return x * DIST_SCALE + DIST_LOCATION; } -#ifdef DISTRIBUTION_LAST_PATH +#if LAST_INCLUDE_PASS static void go_dist_uniform_class_init (GObjectClass *klass) { GODistributionClass *dist_klass = (GODistributionClass *) klass; dist_klass->dist_type = GO_DISTRIBUTION_UNIFORM; - dist_klass->get_density = go_uniform_get_density; - dist_klass->get_cumulative = go_uniform_get_cumulative; - dist_klass->get_ppf = go_uniform_get_ppf; -#ifdef GOFFICE_WITH_LONG_DOUBLE - dist_klass->get_densityl = go_uniform_get_densityl; - dist_klass->get_cumulativel = go_uniform_get_cumulativel; - dist_klass->get_ppfl = go_uniform_get_ppfl; -#endif + SET_HANDLERS(dist_klass, go_uniform); } static void @@ -540,16 +552,15 @@ go_dist_uniform_class_init, go_dist_uniform_init, GO_TYPE_DISTRIBUTION) -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* LAST_INCLUDE_PASS */ /*****************************************************************************/ /* Cauchy distribution */ /*****************************************************************************/ -#ifdef DISTRIBUTION_FIRST_PATH +#ifdef DEFINE_COMMON typedef struct { GODistribution base; - } GODistCauchy; #define GO_TYPE_DIST_CAUCHY (go_dist_cauchy_get_type ()) @@ -560,41 +571,34 @@ typedef GODistributionClass GODistCauchyClass; -#endif /* DISTRIBUTION_FIRST_PATH */ +#endif /* DEFINE_COMMON */ static DOUBLE -SUFFIX (go_cauchy_get_density) (GODistribution *dist, DOUBLE x) +SUFFIX(go_cauchy_get_density) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_dcauchy) (x, dist->location, dist->scale, FALSE); + return SUFFIX(go_dcauchy) (x, DIST_LOCATION, DIST_SCALE, FALSE); } static DOUBLE -SUFFIX (go_cauchy_get_cumulative) (GODistribution *dist, DOUBLE x) +SUFFIX(go_cauchy_get_cumulative) (GODistribution *dist, gboolean lower_tail, DOUBLE x) { - return SUFFIX (go_pcauchy) (x, dist->location, dist->scale, TRUE, FALSE); + return SUFFIX(go_pcauchy) (x, DIST_LOCATION, DIST_SCALE, lower_tail, FALSE); } static DOUBLE -SUFFIX (go_cauchy_get_ppf) (GODistribution *dist, DOUBLE x) +SUFFIX(go_cauchy_get_ppf) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_qcauchy) (x, dist->location, dist->scale, TRUE, FALSE); + return SUFFIX(go_qcauchy) (x, DIST_LOCATION, DIST_SCALE, TRUE, FALSE); } -#ifdef DISTRIBUTION_LAST_PATH +#if LAST_INCLUDE_PASS static void go_dist_cauchy_class_init (GObjectClass *klass) { GODistributionClass *dist_klass = (GODistributionClass *) klass; dist_klass->dist_type = GO_DISTRIBUTION_CAUCHY; - dist_klass->get_density = go_cauchy_get_density; - dist_klass->get_cumulative = go_cauchy_get_cumulative; - dist_klass->get_ppf = go_cauchy_get_ppf; -#ifdef GOFFICE_WITH_LONG_DOUBLE - dist_klass->get_densityl = go_cauchy_get_densityl; - dist_klass->get_cumulativel = go_cauchy_get_cumulativel; - dist_klass->get_ppfl = go_cauchy_get_ppfl; -#endif + SET_HANDLERS(dist_klass, go_cauchy); } static void @@ -606,12 +610,12 @@ go_dist_cauchy_class_init, go_dist_cauchy_init, GO_TYPE_DISTRIBUTION) -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* LAST_INCLUDE_PASS */ /*****************************************************************************/ /* Weibull distribution */ /*****************************************************************************/ -#ifdef DISTRIBUTION_FIRST_PATH +#ifdef DEFINE_COMMON typedef struct { GODistribution base; @@ -631,27 +635,28 @@ WEIBULL_PROP_SHAPE }; -#endif /* DISTRIBUTION_FIRST_PATH */ +#endif /* DEFINE_COMMON */ static DOUBLE -SUFFIX (go_weibull_get_density) (GODistribution *dist, DOUBLE x) +SUFFIX(go_weibull_get_density) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_dweibull) (x - dist->location, GO_DIST_WEIBULL (dist)->shape, dist->scale, FALSE) ; + return SUFFIX(go_dweibull) (x - DIST_LOCATION, GO_DIST_WEIBULL (dist)->shape, DIST_SCALE, FALSE) ; } static DOUBLE -SUFFIX (go_weibull_get_cumulative) (GODistribution *dist, DOUBLE x) +SUFFIX(go_weibull_get_cumulative) (GODistribution *dist, gboolean lower_tail, DOUBLE x) { - return SUFFIX (go_pweibull) (x - dist->location, GO_DIST_WEIBULL (dist)->shape, dist->scale, TRUE, FALSE) ; + return SUFFIX(go_pweibull) (x - DIST_LOCATION, GO_DIST_WEIBULL (dist)->shape, DIST_SCALE, + lower_tail, FALSE) ; } static DOUBLE -SUFFIX (go_weibull_get_ppf) (GODistribution *dist, DOUBLE x) +SUFFIX(go_weibull_get_ppf) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_qweibull) (x, GO_DIST_WEIBULL (dist)->shape, dist->scale, TRUE, FALSE) + dist->location; + return SUFFIX(go_qweibull) (x, GO_DIST_WEIBULL (dist)->shape, DIST_SCALE, TRUE, FALSE) + DIST_LOCATION; } -#ifdef DISTRIBUTION_LAST_PATH +#if LAST_INCLUDE_PASS static void go_dist_weibull_set_property (GObject *obj, guint param_id, @@ -688,14 +693,7 @@ { GODistributionClass *dist_klass = (GODistributionClass *) klass; dist_klass->dist_type = GO_DISTRIBUTION_WEIBULL; - dist_klass->get_density = go_weibull_get_density; - dist_klass->get_cumulative = go_weibull_get_cumulative; - dist_klass->get_ppf = go_weibull_get_ppf; -#ifdef GOFFICE_WITH_LONG_DOUBLE - dist_klass->get_densityl = go_weibull_get_densityl; - dist_klass->get_cumulativel = go_weibull_get_cumulativel; - dist_klass->get_ppfl = go_weibull_get_ppfl; -#endif + SET_HANDLERS(dist_klass, go_weibull); klass->set_property = go_dist_weibull_set_property; klass->get_property = go_dist_weibull_get_property; g_object_class_install_property (klass, WEIBULL_PROP_SHAPE, @@ -718,12 +716,12 @@ go_dist_weibull_class_init, go_dist_weibull_init, GO_TYPE_DISTRIBUTION) -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* LAST_INCLUDE_PASS */ /*****************************************************************************/ /* Lognormal distribution */ /*****************************************************************************/ -#ifdef DISTRIBUTION_FIRST_PATH +#ifdef DEFINE_COMMON typedef struct { GODistribution base; @@ -743,31 +741,32 @@ LNORM_PROP_SHAPE }; -#endif /* DISTRIBUTION_FIRST_PATH */ +#endif /* DEFINE_COMMON */ static DOUBLE -SUFFIX (go_log_normal_get_density) (GODistribution *dist, DOUBLE x) +SUFFIX(go_log_normal_get_density) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_dlnorm) ((x - dist->location) / dist->scale, 0., GO_DIST_LOG_NORMAL (dist)->shape, FALSE); + return SUFFIX(go_dlnorm) ((x - DIST_LOCATION) / DIST_SCALE, 0., GO_DIST_LOG_NORMAL (dist)->shape, FALSE); } static DOUBLE -SUFFIX (go_log_normal_get_cumulative) (GODistribution *dist, DOUBLE x) +SUFFIX(go_log_normal_get_cumulative) (GODistribution *dist, gboolean lower_tail, DOUBLE x) { - return SUFFIX (go_plnorm) ((x - dist->location) / dist->scale, 0., GO_DIST_LOG_NORMAL (dist)->shape, TRUE, FALSE); + return SUFFIX(go_plnorm) ((x - DIST_LOCATION) / DIST_SCALE, 0., GO_DIST_LOG_NORMAL (dist)->shape, + lower_tail, FALSE); } static DOUBLE -SUFFIX (go_log_normal_get_ppf) (GODistribution *dist, DOUBLE x) +SUFFIX(go_log_normal_get_ppf) (GODistribution *dist, DOUBLE x) { - return SUFFIX (go_qlnorm) (x, 0., GO_DIST_LOG_NORMAL (dist)->shape, TRUE, FALSE) * dist->scale + dist->location; + return SUFFIX(go_qlnorm) (x, 0., GO_DIST_LOG_NORMAL (dist)->shape, TRUE, FALSE) * DIST_SCALE + DIST_LOCATION; } -#ifdef DISTRIBUTION_LAST_PATH +#if LAST_INCLUDE_PASS static void go_dist_log_normal_set_property (GObject *obj, guint param_id, - GValue const *value, GParamSpec *pspec) + GValue const *value, GParamSpec *pspec) { GODistLogNormal *dist = GO_DIST_LOG_NORMAL (obj); @@ -800,14 +799,7 @@ { GODistributionClass *dist_klass = (GODistributionClass *) klass; dist_klass->dist_type = GO_DISTRIBUTION_LOGNORMAL; - dist_klass->get_density = go_log_normal_get_density; - dist_klass->get_cumulative = go_log_normal_get_cumulative; - dist_klass->get_ppf = go_log_normal_get_ppf; -#ifdef GOFFICE_WITH_LONG_DOUBLE - dist_klass->get_densityl = go_log_normal_get_densityl; - dist_klass->get_cumulativel = go_log_normal_get_cumulativel; - dist_klass->get_ppfl = go_log_normal_get_ppfl; -#endif + SET_HANDLERS(dist_klass, go_log_normal); klass->set_property = go_dist_log_normal_set_property; klass->get_property = go_dist_log_normal_get_property; g_object_class_install_property (klass, LNORM_PROP_SHAPE, @@ -830,13 +822,13 @@ go_dist_log_normal_class_init, go_dist_log_normal_init, GO_TYPE_DISTRIBUTION) -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* LAST_INCLUDE_PASS */ /*****************************************************************************/ /* Global functions */ /*****************************************************************************/ -#ifdef DISTRIBUTION_LAST_PATH +#if LAST_INCLUDE_PASS GODistribution* go_distribution_new (GODistributionType type) @@ -879,4 +871,12 @@ go_dist_log_normal_get_type (); } -#endif /* DISTRIBUTION_LAST_PATH */ +#endif /* LAST_INCLUDE_PASS */ + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-distribution.h goffice-0.10.57/goffice/math/go-distribution.h --- goffice-0.10.56/goffice/math/go-distribution.h 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-distribution.h 2024-01-19 20:43:15.000000000 +0000 @@ -59,6 +59,8 @@ double go_distribution_get_survival (GODistribution *dist, double x); double go_distribution_get_inverse_survival (GODistribution *dist, double x); +// ---------------------------------------------------------------------------- + #ifdef GOFFICE_WITH_LONG_DOUBLE long double go_distribution_get_densityl (GODistribution *dist, long double x); long double go_distribution_get_cumulativel (GODistribution *dist, long double x); @@ -69,6 +71,20 @@ long double go_distribution_get_inverse_survivall (GODistribution *dist, long double x); #endif +// ---------------------------------------------------------------------------- + +#ifdef GOFFICE_WITH_DECIMAL64 +_Decimal64 go_distribution_get_densityD (GODistribution *dist, _Decimal64 x); +_Decimal64 go_distribution_get_cumulativeD (GODistribution *dist, _Decimal64 x); +_Decimal64 go_distribution_get_ppfD (GODistribution *dist, _Decimal64 x); +_Decimal64 go_distribution_get_hazardD (GODistribution *dist, _Decimal64 x); +_Decimal64 go_distribution_get_cumulative_hazardD (GODistribution *dist, _Decimal64 x); +_Decimal64 go_distribution_get_survivalD (GODistribution *dist, _Decimal64 x); +_Decimal64 go_distribution_get_inverse_survivalD (GODistribution *dist, _Decimal64 x); +#endif + +// ---------------------------------------------------------------------------- + void go_distribution_scale (GODistribution *dist, double location, double scale); void _go_distributions_init (void); diff -Nru goffice-0.10.56/goffice/math/go-dtoa.c goffice-0.10.57/goffice/math/go-dtoa.c --- goffice-0.10.56/goffice/math/go-dtoa.c 2023-05-21 16:08:07.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-dtoa.c 2024-01-20 16:11:22.000000000 +0000 @@ -168,7 +168,7 @@ if (!go_finitel(y)) { const char *s = (t&32)?"inf":"INF"; - if (y!=y) s=(t&32)?"nan":"NAN", pl=0; + if (y!=y) s=(t&32)?"nan":"NAN"; pad(f, ' ', w, 3+pl, fl&~ZERO_PAD); out(f, prefix, pl); out(f, s, 3); @@ -400,15 +400,29 @@ /* musl code ends here */ +typedef enum { + FP_DOUBLE, + FP_LONG_DOUBLE, + FP_DECIMAL64 +} FloatType; + +typedef union { + long double ld; +#ifdef GOFFICE_WITH_DECIMAL64 + _Decimal64 d64; +#endif +} FloatValueType; + + static void -parse_fmt (const char *fmt, va_list args, gboolean *is_long, - int *w, int *p, int *fl, int *t, long double *d) +parse_fmt (const char *fmt, va_list args, FloatType *fltyp, + int *w, int *p, int *fl, int *t, FloatValueType *d) { - *is_long = FALSE; + *fltyp = FP_DOUBLE; + d->ld = 0; *w = 1; *p = -1; *fl = 0; - *d = 0; *t = 'g'; while (1) { @@ -424,8 +438,11 @@ break; } - while (g_ascii_isdigit (*fmt)) - *w = *w * 10 + (*fmt++ - '0'); + if (g_ascii_isdigit (*fmt)) { + *w = 0; + while (g_ascii_isdigit (*fmt)) + *w = *w * 10 + (*fmt++ - '0'); + } if (*fmt == '.') { if (fmt[1] == '*') { @@ -440,34 +457,84 @@ } if (*fmt == 'L') { - *is_long = TRUE; + *fltyp = FP_LONG_DOUBLE; + fmt++; + } +#ifdef GOFFICE_WITH_DECIMAL64 + else if (*fmt == *GO_DECIMAL64_MODIFIER) { + *fltyp = FP_DECIMAL64; fmt++; } +#endif if (!strchr ("efgaEFGA", *fmt)) return; *t = *fmt; - if (*is_long) - *d = va_arg (args, long double); - else - *d = va_arg (args, double); + switch (*fltyp) { + case FP_DOUBLE: + d->ld = va_arg (args, double); + break; + case FP_LONG_DOUBLE: +#ifdef GOFFICE_WITH_LONG_DOUBLE + d->ld = va_arg (args, long double); +#else + memset (d, 0, sizeof (*d)); + g_critical ("Compiled without long-double, then asked to use it"); +#endif + break; + case FP_DECIMAL64: +#ifdef GOFFICE_WITH_DECIMAL64 + d->d64 = va_arg (args, _Decimal64); +#else + memset (d, 0, sizeof (*d)); + g_critical ("Compiled without Decimal64, then asked to use it"); +#endif + break; + } } static void -fmt_shortest (GString *dst, long double d, int fl, int t, gboolean is_long) +fmt_shortest (GString *dst, FloatValueType *d, int fl, int t, FloatType fltyp) { size_t oldlen = dst->len; int n, e, ndec; char *epos, *dpos; gboolean use_e_notation; GString const *dec = go_locale_get_decimal(); + gboolean used_ryu; + int prec; g_string_set_size (dst, 53 + oldlen + dec->len); - if (is_long) - n = go_ryu_ld2s_buffered_n (d, dst->str + oldlen); - else - n = go_ryu_d2s_buffered_n ((double)d, dst->str + oldlen); + switch (fltyp) { + case FP_DOUBLE: + n = go_ryu_d2s_buffered_n ((double)(d->ld), dst->str + oldlen); + used_ryu = TRUE; + prec = 17; + break; +#ifdef GOFFICE_WITH_LONG_DOUBLE + case FP_LONG_DOUBLE: + n = go_ryu_ld2s_buffered_n (d->ld, dst->str + oldlen); + used_ryu = TRUE; + prec = 21; + break; +#endif +#ifdef GOFFICE_WITH_DECIMAL64 + case FP_DECIMAL64: { + const char *sfmt = (t & 32) + ? "%.16" GO_DECIMAL64_MODIFIER "g" + : "%.16" GO_DECIMAL64_MODIFIER "G"; + n = sprintf (dst->str + oldlen, sfmt, d->d64); + // FIXME: if sprintf gains intl support, fix needed here + used_ryu = FALSE; + prec = 16; + break; + } +#endif + default: + g_assert_not_reached (); + } + g_string_set_size (dst, oldlen + n); dpos = strchr (dst->str + oldlen, '.'); epos = strchr (dst->str + oldlen, 'E'); @@ -494,12 +561,14 @@ e = atoi (epos + 1); use_e_notation = (t | 32) == 'e' || - ((t | 32) == 'g' && (e < -4 || e >= (is_long ? 21 : 17))); + ((t | 32) == 'g' && (e < -4 || e >= prec)); if (use_e_notation) { // Downcase 'E', if needed if (t & 32) *epos = 'e'; // Use printf rules for exponents - if (e >= 0 && e <= 9) + if (!used_ryu) { + ; // Nothing + } else if (e >= 0 && e <= 9) g_string_insert (dst, epos - dst->str + 1, "+0"); else if (e >= 10) g_string_insert_c (dst, epos - dst->str + 1, '+'); @@ -507,21 +576,71 @@ g_string_insert_c (dst, epos - dst->str + 2, '0'); return; } else { + g_assert (used_ryu); // Else f-notation. Redo. int precision = MAX (0, ndec - e); t = (t & 32) | 'F'; g_string_set_size (dst, oldlen); - fmt_fp (dst, d, 1, precision, fl, t); + fmt_fp (dst, d->ld, 1, precision, fl, t); + } +} + +#ifdef GOFFICE_WITH_DECIMAL64 +static void +fmt_d64 (GString *dst, const char *fmt, _Decimal64 d, int w, int p) +{ + // We're in here because we want ascii and round-away-from-zero handling + // For now we're punting. + GString *fmt2 = g_string_sized_new (100); + gboolean seen_dot = FALSE; + gboolean ascii = FALSE; + size_t oldlen = dst->len; + + g_string_append_c (fmt2, '%'); + while (*fmt) { + char c = *fmt++; + if (strchr ("0123456789+-aAeEfFgG" GO_DECIMAL64_MODIFIER, c)) + g_string_append_c (fmt2, c); + else if (c == '.') { + g_string_append_c (fmt2, c); + seen_dot = TRUE; + } else if (c == '*') { + g_string_append_printf (fmt2, "%d", (seen_dot ? p : w)); + } else if (strchr ("!=", c)) { + // Ignore, not relevant + } else if (c == '^') { + // FIXME: if sprintf starts rounding to even, fix needed here + // Ignore for now + } else if (c == ',') { + ascii = TRUE; + } else { + g_printerr ("Ignoring unexpected char '%c'\n", c); + } + } + + g_string_append_printf (dst, fmt2->str, d); + g_string_free (fmt2, TRUE); + + if (ascii) { + GString const *decimal = go_locale_get_decimal (); + char *dpos = strstr (dst->str + oldlen, decimal->str); + if (dpos && decimal->len) { + size_t pos = dpos - dst->str; + g_string_erase (dst, pos + 1, decimal->len - 1); + dst->str[pos] = '.'; + } } } +#endif + void go_dtoa (GString *dst, const char *fmt, ...) { int w, p, fl, t; va_list args; - long double d; - gboolean is_long; + FloatValueType d; + FloatType fltyp; gboolean debug = FALSE; #ifdef ENSURE_FPU_STATE fpu_control_t oldstate; @@ -529,13 +648,11 @@ #endif va_start (args, fmt); - parse_fmt (fmt, args, &is_long, &w, &p, &fl, &t, &d); + parse_fmt (fmt, args, &fltyp, &w, &p, &fl, &t, &d); va_end (args); if (fl & FLAG_TRUNCATE) g_string_truncate (dst, 0); - if (debug) g_printerr ("%Lg [%s] t=%c p=%d\n", d, fmt, t, p); - #ifdef ENSURE_FPU_STATE // fmt_fp depends on "long double" behaving right. That means that the // fpu must not be in round-to-double mode. @@ -549,9 +666,14 @@ #endif if (fl & FLAG_SHORTEST) - fmt_shortest (dst, d, fl, t, is_long); - else - fmt_fp (dst, d, w, p, fl, t); + fmt_shortest (dst, &d, fl, t, fltyp); +#ifdef GOFFICE_WITH_DECIMAL64 + else if (fltyp == FP_DECIMAL64) + fmt_d64 (dst, fmt, d.d64, w, p); +#endif + else { + fmt_fp (dst, d.ld, w, p, fl, t); + } #ifdef ENSURE_FPU_STATE if ((oldstate & mask) != _FPU_EXTENDED) { diff -Nru goffice-0.10.56/goffice/math/go-fft.c goffice-0.10.57/goffice/math/go-fft.c --- goffice-0.10.56/goffice/math/go-fft.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-fft.c 2024-01-19 20:43:15.000000000 +0000 @@ -18,28 +18,10 @@ #include #include -#ifndef DOUBLE - -#define DOUBLE double -#define SUFFIX(_n) _n -#define M_PIgo 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117 - -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-fft.c" -#undef DOUBLE -#undef SUFFIX -#undef M_PIgo - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#define M_PIgo 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117L -#endif - -#endif - +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS void SUFFIX(go_fourier_fft) (SUFFIX(go_complex) const *in, int n, int skip, SUFFIX(go_complex) **fourier, gboolean inverse) @@ -59,7 +41,7 @@ SUFFIX(go_fourier_fft) (in, nhalf, skip * 2, &fourier_1, inverse); SUFFIX(go_fourier_fft) (in + skip, nhalf, skip * 2, &fourier_2, inverse); - argstep = (inverse ? M_PIgo : -M_PIgo) / nhalf; + argstep = (inverse ? DOUBLE_PI : -DOUBLE_PI) / nhalf; for (i = 0; i < nhalf; i++) { SUFFIX(go_complex) dir, tmp; @@ -76,3 +58,11 @@ g_free (fourier_1); g_free (fourier_2); } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-fft.h goffice-0.10.57/goffice/math/go-fft.h --- goffice-0.10.56/goffice/math/go-fft.h 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-fft.h 2024-01-19 20:43:15.000000000 +0000 @@ -5,11 +5,20 @@ G_BEGIN_DECLS -void go_fourier_fft (go_complex const *in, int n, int skip, go_complex **fourier, gboolean inverse); +void go_fourier_fft (go_complex const *in, int n, int skip, + go_complex **fourier, gboolean inverse); #ifdef GOFFICE_WITH_LONG_DOUBLE -void go_fourier_fftl (go_complexl const *in, int n, int skip, go_complexl **fourier, gboolean inverse); +void go_fourier_fftl (go_complexl const *in, int n, int skip, + go_complexl **fourier, gboolean inverse); + +#endif + +#ifdef GOFFICE_WITH_DECIMAL64 + +void go_fourier_fftD (go_complexD const *in, int n, int skip, + go_complexD **fourier, gboolean inverse); #endif diff -Nru goffice-0.10.56/goffice/math/go-math.c goffice-0.10.57/goffice/math/go-math.c --- goffice-0.10.56/goffice/math/go-math.c 2023-06-11 23:03:26.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-math.c 2024-01-19 20:43:15.000000000 +0000 @@ -177,6 +177,29 @@ } #endif +#ifdef GOFFICE_WITH_DECIMAL64 + go_nanD = go_nan; + go_pinfD = go_pinf; + go_ninfD = go_ninf; + if (!(isnanD (go_nanD) && + go_pinfD > 0 && !finiteD (go_pinfD) && + go_ninfD < 0 && !finiteD (go_ninfD))) { + g_error ("Failed to generate _Decimal64 NaN/+Inf/-Inf."); + } + + { + // There's a chance that some fool used FLT_RADIX here, + // but that would be really unhelpful. The whole point + // is to have a fast, loss-free scaling function + _Decimal64 y = scalbnD (1, 1); + if (y != 10) { + // Don't try to print _Decimal64 at this stage + g_error ("We expected scalbnD(1,1) to be 10, but got %g", + (double)y); + } + } +#endif + { double x = g_ascii_strtod ("24985672148.49707", NULL); double sx = sin (x); @@ -197,18 +220,18 @@ * go_add_epsilon: * @x: a number * - * Returns the next-smaller representable value, except that zero and + * Returns the next-larger representable value, except that zero and * infinites are returned unchanged. */ double go_add_epsilon (double x) { -#ifdef HAVE_NEXTAFTER - return x == 0 ? x : nextafter (x, go_pinf); -#else if (!go_finite (x) || x == 0) return x; - else if (x < 0) +#ifdef HAVE_NEXTAFTER + return nextafter (x, go_pinf); +#else + if (x < 0) return 0 - go_sub_epsilon(-x); else { int e; @@ -229,12 +252,12 @@ double go_sub_epsilon (double x) { -#ifdef HAVE_NEXTAFTER - return x == 0 ? x : nextafter (x, go_ninf); -#else if (!go_finite (x) || x == 0) return x; - else if (x < 0) +#ifdef HAVE_NEXTAFTER + return nextafter (x, go_ninf); +#else + if (x < 0) return 0 - go_add_epsilon(-x); else { int e; @@ -253,12 +276,13 @@ return *px; } -/* - * go_fake_floor: a variant of floor with a 1ulp grace interval +/** + * go_fake_floor: * @x: value to floor * - * This works like floor, i.e., rounds to integer in the direction of negative - * infinity, except that a value of 1ulp less than an integer will round up. + * Returns: the floor of @x, ie., the largest integer that is not larger + * than @x. However, this variant applies a 1 ulp grace interval for + * values that are just a hair less than an integer. */ double go_fake_floor (double x) @@ -271,12 +295,13 @@ return floor (go_add_epsilon (x)); } -/* - * go_fake_ceil: a variant of ceil with a 1ulp grace interval +/** + * go_fake_ceil: * @x: value to ceil * - * This works like ceil, i.e., rounds to integer in the direction of positive - * infinity, except that a value of 1ulp more than an integer will round down. + * Returns: the ceiling of @x, ie., the smallest integer that is not smaller + * than @x. However, this variant applies a 1 ulp grace interval for + * values that are just a hair larger than an integer. */ double go_fake_ceil (double x) @@ -347,16 +372,28 @@ #endif } +/** + * go_pow2: + * @n: exponent + * + * Computes 2 to the power of @n. This is fast and accurate. + */ double go_pow2 (int n) { - g_assert (FLT_RADIX == 2); return ldexp (1.0, n); } #define TEN(n) ONE(n ## 0),ONE(n ## 1),ONE(n ## 2),ONE(n ## 3),ONE(n ## 4),ONE(n ## 5),ONE(n ## 6),ONE(n ## 7),ONE(n ## 8),ONE(n ## 9) #define HUNDRED(n) TEN(n ## 0),TEN(n ## 1),TEN(n ## 2),TEN(n ## 3),TEN(n ## 4),TEN(n ## 5),TEN(n ## 6),TEN(n ## 7),TEN(n ## 8),TEN(n ## 9) +/** + * go_pow10: + * @n: exponent + * + * Computes 10 to the power of @n. This is fast and accurate (under the + * reasonable assumption that the compiler is accurate). + */ double go_pow10 (int n) { @@ -424,8 +461,8 @@ } -/* - * go_strtod: A sane strtod. +/** + * go_strtod: * @s: string to convert * @end: (out) (transfer none) (optional): pointer to end of string. * @@ -464,8 +501,8 @@ return res; } -/* - * go_ascii_strtod: A sane g_ascii_strtod. +/** + * go_ascii_strtod: * @s: string to convert * @end: optional pointer to end of string. * @@ -602,7 +639,6 @@ #ifdef GOFFICE_SUPPLIED_LDEXPL return powl (2.0L, n); #else - g_assert (FLT_RADIX == 2); return ldexpl (1.0L, n); #endif } @@ -686,8 +722,8 @@ } -/* - * go_strtold: A sane strtold. +/** + * go_strtold: * @s: string to convert * @end: (out) (transfer none) (optional): pointer to end of string. * @@ -725,12 +761,13 @@ return res; } -/* - * go_ascii_strtold: A sane strtold pretending to be in "C" locale. +/** + * go_ascii_strtold: * @s: string to convert * @end: optional pointer to end of string. * - * Like strtold, but without hex notation and MS extensions. + * Like strtold, but without hex notation and MS extensions and also + * assuming "C" locale. * Unlike strtold, there is no need to reset errno before calling this. */ long double @@ -757,6 +794,7 @@ } g_string_append_c (tmp, *s++); } + errno = 0; res = strtold (tmp->str, NULL); save_errno = errno; g_string_free (tmp, TRUE); @@ -765,22 +803,15 @@ return res; } -/** - * go_add_epsilonl: - * @x: a number - * - * Returns the next-larger representable value, except that zero and - * infinites are returned unchanged. - */ long double go_add_epsilonl (long double x) { -#ifdef HAVE_NEXTAFTERL - return x == 0 ? x : nextafterl (x, go_pinfl); -#else if (!go_finitel (x) || x == 0) return x; - else if (x < 0) +#ifdef HAVE_NEXTAFTERL + return nextafterl (x, go_pinfl); +#else + if (x < 0) return 0 - go_sub_epsilonl(-x); else { int e; @@ -791,22 +822,15 @@ #endif } -/** - * go_sub_epsilonl: - * @x: a number - * - * Returns the next-smaller representable value, except that zero and - * infinites are returned unchanged. - */ long double go_sub_epsilonl (long double x) { + if (!go_finitel (x) || x == 0) + return x; #ifdef HAVE_NEXTAFTERL return x == 0 ? x : nextafterl (x, go_ninfl); #else - if (!go_finitel (x) || x == 0) - return x; - else if (x < 0) + if (x < 0) return 0 - go_add_epsilonl(-x); else { int e; @@ -979,6 +1003,189 @@ /* ------------------------------------------------------------------------- */ +#ifdef GOFFICE_WITH_DECIMAL64 + +_Decimal64 go_nanD; +_Decimal64 go_pinfD; +_Decimal64 go_ninfD; + +int +go_finiteD (_Decimal64 x) +{ + return finiteD (x); +} + +_Decimal64 +go_pow2D (int n) +{ + if (n >= -1022 && n <= 1023) + return (_Decimal64)(go_pow2 (n)); + else + return powD (2.dd, n); +} + +_Decimal64 +go_pow10D (int n) +{ + return scalbnD (1.dd, n); +} + +_Decimal64 +go_powD (_Decimal64 x, _Decimal64 y) +{ + return powD (x, y); +} + +_Decimal64 +go_log10D (_Decimal64 x) +{ + return log10D (x); +} + + +/** + * go_strtoDd: + * @s: string to convert + * @end: (out) (transfer none) (optional): pointer to end of string. + * + * Returns: the numeric value of the given string. + * Like strtod, but for type _Decimal64 and without hex notation and + * MS extensions. + * Unlike strtold, there is no need to reset errno before calling this. + */ +_Decimal64 +go_strtoDd (const char *s, char **end) +{ + int maxlen = strtod_helper (s); + int save_errno; + char *tmp; + _Decimal64 res; + + if (maxlen == INT_MAX) { + errno = 0; + return strtoDd (s, end); + } else if (maxlen < 0) { + errno = 0; + if (end) + *end = (char *)s - maxlen; + return 0; + } + + tmp = g_strndup (s, maxlen); + errno = 0; + res = strtoDd (tmp, end); + save_errno = errno; + if (end) + *end = (char *)s + (*end - tmp); + g_free (tmp); + errno = save_errno; + + return res; +} + +/** + * go_ascii_strtoDd: + * @s: string to convert + * @end: optional pointer to end of string. + * + * Like strtoDd, but applying "C" locale and without hex notation and + * MS extensions. + * Unlike strtod, there is no need to reset errno before calling this. + */ +_Decimal64 +go_ascii_strtoDd (const char *s, char **end) +{ + GString *tmp; + const GString *decimal; + int save_errno; + char *the_end; + /* Use the "double" version for parsing. */ + _Decimal64 res = go_ascii_strtod (s, &the_end); + if (end) + *end = the_end; + if (the_end == s) + return res; + + decimal = go_locale_get_decimal (); + tmp = g_string_sized_new (the_end - s + 10); + while (s < the_end) { + if (*s == '.') { + g_string_append_len (tmp, decimal->str, decimal->len); + g_string_append (tmp, ++s); + break; + } + g_string_append_c (tmp, *s++); + } + errno = 0; + res = strtoDd (tmp->str, NULL); + save_errno = errno; + g_string_free (tmp, TRUE); + errno = save_errno; + + return res; +} + +_Decimal64 +go_add_epsilonD (_Decimal64 x) +{ + return x == 0 ? x : nextafterD (x, go_pinfD); +} + +_Decimal64 +go_sub_epsilonD (_Decimal64 x) +{ + return x == 0 ? x : nextafterD (x, go_ninfD); +} + +_Decimal64 +go_fake_floorD (_Decimal64 x) +{ + if (x == floorD (x)) + return x; + + return floorD (go_add_epsilonD (x)); +} + +_Decimal64 +go_fake_ceilD (_Decimal64 x) +{ + if (x == floorD (x)) + return x; + + return ceilD (go_sub_epsilonD (x)); +} + +_Decimal64 +go_fake_roundD (_Decimal64 x) +{ + _Decimal64 y; + + if (x == floorD (x)) + return x; + + /* + * Adding a half here is ok. The only problematic non-integer + * case is nextafter(0.5,-1) for which we want to produce 1 here. + */ + y = go_fake_floorD (fabsD (x) + 0.5dd); + return (x < 0) ? 0 - y : y; +} + +_Decimal64 +go_fake_truncD (_Decimal64 x) +{ + if (x == floorD (x)) + return x; + + return (x >= 0) + ? floorD (go_add_epsilonD (x)) + : 0 - floorD (go_add_epsilonD (-x)); +} + +#endif + +/* ------------------------------------------------------------------------- */ + void go_continued_fraction (double val, int max_denom, int *res_num, int *res_denom) { @@ -1175,6 +1382,13 @@ return go_sinpi (x) / go_cospi (x); } +/** + * go_cotpi: + * @x: a number + * + * Returns: the cotangent of Pi times @x, but with less error than doing the + * multiplication outright. + */ double go_cotpi (double x) { @@ -1194,6 +1408,14 @@ return go_cospi (x) / go_sinpi (x); } +/** + * go_atan2pi: + * @y: a number + * @x: a number + * + * Returns: the polar angle of the point (@x,@y) in radians divided by Pi. + * The result is a number between -1 and +1. + */ double go_atan2pi (double y, double x) { @@ -1204,6 +1426,13 @@ return atan2 (y, x) / M_PI; } +/** + * go_atanpi: + * @x: a number + * + * Returns: the arc tangent of @x in radians divided by Pi. The result is a + * number between -1 and +1. + */ double go_atanpi (double x) { @@ -1253,14 +1482,6 @@ return (k & 2) ? 0 - y : y; } - -/** - * go_sinpil: - * @x: a number - * - * Returns: the sine of Pi times @x, but with less error than doing the - * multiplication outright. - */ long double go_sinpil (long double x) { @@ -1278,13 +1499,6 @@ return do_sinpil (x, k); } -/** - * go_cospil: - * @x: a number - * - * Returns: the cosine of Pi times @x, but with less error than doing the - * multiplication outright. - */ long double go_cospil (long double x) { @@ -1301,13 +1515,6 @@ return do_sinpil (x, k + 1); } -/** - * go_tanpil: - * @x: a number - * - * Returns: the tangent of Pi times @x, but with less error than doing the - * multiplication outright. - */ long double go_tanpil (long double x) { @@ -1365,4 +1572,132 @@ #endif +#ifdef GOFFICE_WITH_DECIMAL64 + +static _Decimal64 +reduce_halfD (_Decimal64 x, int *pk) +{ + int k = 0; + + if (x < 0) { + x = -reduce_halfD (-x, &k); + k = 4 - k; + if (x == -0.25dd) + x += 0.5dd, k += 3; + } else { + x = fmod (x, 2); + if (x >= 1) + x -= 1, k += 2; + if (x >= 0.5dd) + x -= 0.5dd, k++; + if (x > 0.25dd) + x -= 0.5dd, k++; + } + + *pk = (k & 3); + return x; +} + +static _Decimal64 +do_sinpiD (_Decimal64 x, int k) +{ + _Decimal64 y; + + if (x == 0) + y = k & 1; + else if (x == 0.25dd) + y = 0.707106781186547524400844362104849039284835937688474036588339dd; + else + y = (k & 1) ? cos (M_PID * x) : sin (M_PID * x); + + return (k & 2) ? 0 - y : y; +} + +_Decimal64 +go_sinpiD (_Decimal64 x) +{ + int k; + _Decimal64 x0 = x; + x = reduce_halfD (x, &k); + + /* + * Per IEEE 754 2008: + * sinpi(n) == 0 with sign of n. + */ + if (x == 0 && (k & 1) == 0) + return copysignD (0, x0); + + return do_sinpiD (x, k); +} + +_Decimal64 +go_cospiD (_Decimal64 x) +{ + int k; + x = reduce_halfD (x, &k); + + /* + * Per IEEE 754 2008: + * cospi(n+0.5) == +0 for any integer n. + */ + if (x == 0 && (k & 1) == 1) + return +0.0; + + return do_sinpiD (x, k + 1); +} + +_Decimal64 +go_tanpiD (_Decimal64 x) +{ + /* + * IEEE 754 2008 doesn't have tanpi and thus doesn't define the + * behaviour for -0 argument or result. crlibm has tanpi, but + * doesn't seem to be fully clear on these cases. + */ + + /* inf -> nan; -n -> -0; +n -> +0 */ + x = fmodD (x, 1.0dd); + + if (x == 0) + return copysignD (0.0dd, x); + if (fabsD (x) == 0.5dd) + return copysignD (go_nanD, x); + else + return go_sinpiD (x) / go_cospiD (x); +} + +_Decimal64 +go_cotpiD (_Decimal64 x) +{ + /* + * IEEE 754 2008 doesn't have cotpi. Neither does crlibm. Mirror + * tanpi here. + */ + + /* inf -> nan; -n -> -0; +n -> +0 */ + x = fmodD (x, 1.0dd); + + if (x == 0) + return copysign (go_nanD, x); + if (fabsD (x) == 0.5dd) + return copysignD (0.0dd, x); + else + return go_cospiD (x) / go_sinpiD (x); +} + +_Decimal64 +go_atan2piD (_Decimal64 y, _Decimal64 x) +{ + return atan2D (y, x) / M_PID; +} + +_Decimal64 +go_atanpiD (_Decimal64 x) +{ + return x < 0 ? -go_atan2piD (-x, 1) : go_atan2piD (x, 1); +} + +#endif + + /* ------------------------------------------------------------------------- */ diff -Nru goffice-0.10.56/goffice/math/go-math.h goffice-0.10.57/goffice/math/go-math.h --- goffice-0.10.56/goffice/math/go-math.h 2022-02-17 22:35:22.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-math.h 2024-01-19 20:43:15.000000000 +0000 @@ -1,7 +1,7 @@ #ifndef __GO_MATH_H #define __GO_MATH_H -#include +#include #include #include #include @@ -115,12 +115,45 @@ #endif -#ifdef _MSC_VER -#define isnan _isnan +/* ------------------------------------------------------------------------- */ + +#ifdef GOFFICE_WITH_DECIMAL64 + +GO_VAR_DECL _Decimal64 go_nanD; +GO_VAR_DECL _Decimal64 go_pinfD; +GO_VAR_DECL _Decimal64 go_ninfD; + +_Decimal64 go_add_epsilonD (_Decimal64 x); +_Decimal64 go_sub_epsilonD (_Decimal64 x); +_Decimal64 go_fake_floorD (_Decimal64 x); +_Decimal64 go_fake_ceilD (_Decimal64 x); +_Decimal64 go_fake_roundD (_Decimal64 x); +_Decimal64 go_fake_truncD (_Decimal64 x); + +int go_finiteD (_Decimal64 x); +_Decimal64 go_pow2D (int n); +_Decimal64 go_pow10D (int n); +_Decimal64 go_powD (_Decimal64 x, _Decimal64 y); +_Decimal64 go_log10D (_Decimal64 x); + +_Decimal64 go_strtoDd (const char *s, char **end); +_Decimal64 go_ascii_strtoDd (const char *s, char **end); + +_Decimal64 go_sinpiD (_Decimal64 x); +_Decimal64 go_cospiD (_Decimal64 x); +_Decimal64 go_tanpiD (_Decimal64 x); +_Decimal64 go_cotpiD (_Decimal64 x); +_Decimal64 go_atan2piD (_Decimal64 y, _Decimal64 x); +_Decimal64 go_atanpiD (_Decimal64 x); + #endif /* ------------------------------------------------------------------------- */ +#ifdef _MSC_VER +#define isnan _isnan +#endif + G_END_DECLS #endif /* __GO_MATH_H */ diff -Nru goffice-0.10.56/goffice/math/go-matrix.c goffice-0.10.57/goffice/math/go-matrix.c --- goffice-0.10.56/goffice/math/go-matrix.c 2022-02-22 00:11:34.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-matrix.c 2024-01-19 20:43:15.000000000 +0000 @@ -25,41 +25,22 @@ #include #include - -#ifndef DOUBLE +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS #define QUAD SUFFIX(GOQuad) #define QQR SUFFIX(GOQuadQR) #define QMATRIX SUFFIX(GOQuadMatrix) -#define DOUBLE double -#define SUFFIX(_n) _n - -struct GOQuadQR_ { +struct INFIX(GOQuadQR,_) { QMATRIX *V; QMATRIX *R; int qdet; }; -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-matrix.c" -#undef DOUBLE -#undef SUFFIX -#define DOUBLE long double -#define SUFFIX(_n) _n ## l - -struct GOQuadQRl_ { - QMATRIX *V; - QMATRIX *R; - int qdet; -}; - -#endif - -#endif - - /** * go_quad_matrix_new: (skip) * @m: number of rows @@ -67,13 +48,6 @@ * * Returns: a new zero matrix. **/ -/** - * go_quad_matrix_newl: (skip) - * @m: number of rows - * @n: number of columns - * - * Returns: a new zero matrix. - **/ QMATRIX * SUFFIX(go_quad_matrix_new) (int m, int n) { @@ -112,12 +86,6 @@ * * Returns: a new matrix. **/ -/** - * go_quad_matrix_dupl: (skip) - * @A: Matrix to duplicate - * - * Returns: a new matrix. - **/ QMATRIX * SUFFIX(go_quad_matrix_dup) (const QMATRIX *A) { @@ -136,13 +104,6 @@ * * Copies B to A. **/ -/** - * go_quad_matrix_copyl: - * @A: (out): Destination matrix. - * @B: (transfer none): Source matrix. - * - * Copies B to A. - **/ void SUFFIX(go_quad_matrix_copy) (QMATRIX *A, const QMATRIX *B) { @@ -167,13 +128,6 @@ * * Transposes B into A. **/ -/** - * go_quad_matrix_transposel: - * @A: (out): Destination matrix. - * @B: (transfer none): Source matrix. - * - * Transposes B into A. - **/ void SUFFIX(go_quad_matrix_transpose) (QMATRIX *A, const QMATRIX *B) { @@ -200,14 +154,6 @@ * * Multiplies A*B and stores the result in C. **/ -/** - * go_quad_matrix_multiplyl: - * @C: (out): Destination matrix. - * @A: Source matrix. - * @B: Source matrix. - * - * Multiplies A*B and stores the result in C. - **/ void SUFFIX(go_quad_matrix_multiply) (QMATRIX *C, const QMATRIX *A, @@ -245,17 +191,6 @@ * indicating a matrix that cannot be inverted. (Note: this doesn't actually * use the eigenvalues of A, but of A after an orthogonal transformation.) **/ - -/** - * go_quad_matrix_inversel: (skip) - * @A: Source matrix. - * @threshold: condition number threshold. - * - * Returns: The inverse matrix of A. If any eigenvalues divided by the largest - * eigenvalue is less than or equal to the given threshold, %NULL is returned - * indicating a matrix that cannot be inverted. (Note: this doesn't actually - * use the eigenvalues of A, but of A after an orthogonal transformation.) - **/ QMATRIX * SUFFIX(go_quad_matrix_inverse) (const QMATRIX *A, DOUBLE threshold) { @@ -352,14 +287,6 @@ * * Returns: @A's pseudo-inverse. **/ - -/** - * go_quad_matrix_pseudo_inversel: (skip) - * @A: An arbitrary matrix. - * @threshold: condition number threshold. - * - * Returns: @A's pseudo-inverse. - **/ QMATRIX * SUFFIX(go_quad_matrix_pseudo_inverse) (const QMATRIX *A, DOUBLE threshold) { @@ -507,19 +434,6 @@ * * This function solves the triangular system RT*x=b. **/ -/** - * go_quad_matrix_fwd_solvel: - * @R: An upper triangular matrix. - * @x: (out): Result vector. - * @b: Input vector. - * @allow_degenerate: If %TRUE, then degenerate dimensions are ignored other - * than being given a zero result. A degenerate dimension is one whose - * diagonal entry is zero. - * - * Returns: %TRUE on error. - * - * This function solves the triangular system RT*x=b. - **/ gboolean SUFFIX(go_quad_matrix_fwd_solve) (const QMATRIX *R, QUAD *x, const QUAD *b, gboolean allow_degenerate) @@ -573,19 +487,6 @@ * * This function solves the triangular system R*x=b. **/ -/** - * go_quad_matrix_back_solvel: - * @R: An upper triangular matrix. - * @x: (out): Result vector. - * @b: Input vector. - * @allow_degenerate: If %TRUE, then degenerate dimensions are ignored other - * than being given a zero result. A degenerate dimension is one whose - * diagonal entry is zero. - * - * Returns: %TRUE on error. - * - * This function solves the triangular system R*x=b. - **/ gboolean SUFFIX(go_quad_matrix_back_solve) (const QMATRIX *R, QUAD *x, const QUAD *b, gboolean allow_degenerate) @@ -632,12 +533,6 @@ * @emin: (out): Smallest absolute eigen value. * @emax: (out): Largest absolute eigen value. **/ -/** - * go_quad_matrix_eigen_rangel: - * @A: Triangular matrix. - * @emin: (out): Smallest absolute eigen value. - * @emax: (out): Largest absolute eigen value. - **/ void SUFFIX(go_quad_matrix_eigen_range) (const QMATRIX *A, DOUBLE *emin, DOUBLE *emax) @@ -693,13 +588,6 @@ * of R, simply add m-n null rows.) * Returns: (transfer full): a new #GOQuadQR. **/ - -/** - * go_quad_qr_newl: (skip) - * @A: input matrix - * - * Returns: (transfer full): qr decomposition. - **/ QQR * SUFFIX(go_quad_qr_new) (const QMATRIX *A) { @@ -822,13 +710,6 @@ * Returns: the small R from the decomposition, i.e., a square matrix * of size n. To get the large R, if needed, add m-n zero rows. **/ -/** - * go_quad_qr_rl: - * @qr: A QR decomposition. - * - * Returns: the small R from the decomposition, i.e., a square matrix - * of size n. To get the large R, if needed, add m-n zero rows. - **/ const QMATRIX * SUFFIX(go_quad_qr_r) (const QQR *qr) { @@ -844,13 +725,6 @@ * * Replaces @x by Q^t * x **/ -/** - * go_quad_qr_multiply_qtl: - * @qr: A QR decomposition. - * @x: (inout): a vector. - * - * Replaces @x by Q^t * x - **/ void SUFFIX(go_quad_qr_multiply_qt) (const QQR *qr, QUAD *x) { @@ -881,14 +755,6 @@ * Marks dimension i of the qr decomposition as degenerate. In practice * this means setting the i-th eigenvalue of R to zero. **/ -/** - * go_quad_qr_mark_degeneratel: (skip) - * @qr: A QR decomposition. - * @i: a dimension - * - * Marks dimension i of the qr decomposition as degenerate. In practice - * this means setting the i-th eigenvalue of R to zero. - **/ void SUFFIX(go_quad_qr_mark_degenerate) (QQR *qr, int i) { @@ -897,3 +763,11 @@ qr->R->data[i][i] = SUFFIX(go_quad_zero); } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-matrix.h goffice-0.10.57/goffice/math/go-matrix.h --- goffice-0.10.56/goffice/math/go-matrix.h 2016-10-02 18:24:14.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-matrix.h 2024-01-19 20:43:15.000000000 +0000 @@ -50,7 +50,7 @@ void go_quad_qr_multiply_qt (const GOQuadQR *qr, GOQuad *x); void go_quad_qr_mark_degenerate (GOQuadQR *qr, int i); -/* ---------------------------------------- */ +/* ------------------------------------------------------------------------- */ #ifdef GOFFICE_WITH_LONG_DOUBLE struct GOQuadMatrixl_ { @@ -100,6 +100,58 @@ #endif +/* ------------------------------------------------------------------------- */ + +#ifdef GOFFICE_WITH_DECIMAL64 +struct GOQuadMatrixD_ { + GOQuadD **data; /* [m][n] */ + int m; /* down */ + int n; /* right */ +}; + +GOQuadMatrixD *go_quad_matrix_newD (int m, int n); +GOQuadMatrixD *go_quad_matrix_dupD (const GOQuadMatrixD *A); +void go_quad_matrix_freeD (GOQuadMatrixD *A); + +void go_quad_matrix_copyD (GOQuadMatrixD *A, const GOQuadMatrixD *B); +void go_quad_matrix_transposeD (GOQuadMatrixD *A, const GOQuadMatrixD *B); + +void go_quad_matrix_multiplyD (GOQuadMatrixD *C, + const GOQuadMatrixD *A, + const GOQuadMatrixD *B); + +GOQuadMatrixD *go_quad_matrix_inverseD (const GOQuadMatrixD *A, _Decimal64 threshold); + +void go_quad_matrix_determinantD (const GOQuadMatrixD *A, GOQuadD *res); + +GOQuadMatrixD *go_quad_matrix_pseudo_inverseD (const GOQuadMatrixD *A, + _Decimal64 threshold); + +gboolean go_quad_matrix_back_solveD (const GOQuadMatrixD *R, GOQuadD *x, + const GOQuadD *b, + gboolean allow_degenerate); +gboolean go_quad_matrix_fwd_solveD (const GOQuadMatrixD *R, GOQuadD *x, + const GOQuadD *b, + gboolean allow_degenerate); + +void go_quad_matrix_eigen_rangeD (const GOQuadMatrixD *A, + _Decimal64 *emin, _Decimal64 *emax); + +void go_quad_matrix_dumpD (const GOQuadMatrixD *A, const char *fmt); + +/* ---------------------------------------- */ + +GOQuadQRD *go_quad_qr_newD (const GOQuadMatrixD *A); +void go_quad_qr_freeD (GOQuadQRD *qr); +void go_quad_qr_determinantD (const GOQuadQRD *qr, GOQuadD *det); +const GOQuadMatrixD *go_quad_qr_rD (const GOQuadQRD *qr); +void go_quad_qr_multiply_qtD (const GOQuadQRD *qr, GOQuadD *x); +void go_quad_qr_mark_degenerateD (GOQuadQRD *qr, int i); + +#endif + +/* ------------------------------------------------------------------------- */ + G_END_DECLS #endif diff -Nru goffice-0.10.56/goffice/math/go-quad.c goffice-0.10.57/goffice/math/go-quad.c --- goffice-0.10.56/goffice/math/go-quad.c 2021-12-02 02:32:54.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-quad.c 2024-01-19 20:43:15.000000000 +0000 @@ -1,4 +1,4 @@ - /* +/* * go-quad.c: Extended precision routines. * * Authors @@ -23,6 +23,9 @@ * Precision" by T. J. Dekker in _Numerische Mathematik_ 18. * Springer Verlag 1971. * + * See also "On various ways to split a floating-point number" by + * Claude-Pierre Jeannerod, Jean-Michel Muller, and Paul Zimmermann. + * * Note: for this to work, the processor must evaluate with the right * precision. For ix86 that means trouble as the default is to evaluate * with long-double precision internally. We solve this by setting the @@ -42,82 +45,54 @@ #define i386 1 #endif -#ifndef DOUBLE - -#define DEFINE_COMMON - -#ifdef i386 #ifdef HAVE_FPU_CONTROL_H #include #define USE_FPU_CONTROL -#elif defined(__GNUC__) -/* The next few lines from glibc licensed under lpgl 2.1 */ -/* FPU control word bits. i387 version. - Copyright (C) 1993,1995-1998,2000,2001,2003 Free Software Foundation, Inc. */ -#define _FPU_EXTENDED 0x300 /* libm requires double extended precision. */ -#define _FPU_DOUBLE 0x200 -#define _FPU_SINGLE 0x0 -typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__))); -#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw)) -#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw)) -#define USE_FPU_CONTROL -#endif #endif -#define QUAD SUFFIX(GOQuad) +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS -#define DOUBLE double -#define SUFFIX(_n) _n -#define DOUBLE_MANT_DIG DBL_MANT_DIG -#define DOUBLE_EPSILON DBL_EPSILON - -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-quad.c" -#undef DEFINE_COMMON -#undef DOUBLE -#undef SUFFIX -#undef DOUBLE_MANT_DIG -#undef DOUBLE_EPSILON -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#define DOUBLE_MANT_DIG LDBL_MANT_DIG -#define DOUBLE_EPSILON LDBL_EPSILON -#endif +#define DOUBLE_IS_double (INCLUDE_PASS == INCLUDE_PASS_DOUBLE) +#define QUAD SUFFIX(GOQuad) +#define HALF (DOUBLE)0.5 +#if defined(i386) && DOUBLE_IS_double +#define MIGHT_NEED_FPU_SETUP +#else +#undef MIGHT_NEED_FPU_SETUP #endif gboolean SUFFIX(go_quad_functional) (void) { - if (FLT_RADIX != 2) - return FALSE; - -#ifdef i386 - if (sizeof (DOUBLE) != sizeof (double)) - return TRUE; - -#ifdef USE_FPU_CONTROL +#ifdef MIGHT_NEED_FPU_SETUP + #ifdef USE_FPU_CONTROL return TRUE; -#else + #else return FALSE; -#endif + #endif #else return TRUE; #endif } +#ifdef MIGHT_NEED_FPU_SETUP static guint SUFFIX(go_quad_depth) = 0; +#endif static DOUBLE SUFFIX(CST); -#ifdef DEFINE_COMMON /* * Store constants in a way doesn't depend on the layout of DOUBLE. We use * ~400 bits of data in the tables below -- that's way more than needed even - * for sunos' long double. + * for sparc's long double. */ -static const guint8 pi_hex_digits[] = { +static const guint8 SUFFIX(pi_digits)[] = { +#if DOUBLE_RADIX == 2 0x03, 0x24, 0x3f, 0x6a, 0x88, 0x85, 0xa3, 0x08, 0xd3, 0x13, 0x19, 0x8a, 0x2e, 0x03, 0x70, 0x73, 0x44, 0xa4, 0x09, 0x38, 0x22, 0x29, 0x9f, 0x31, @@ -125,9 +100,16 @@ 0x89, 0x45, 0x28, 0x21, 0xe6, 0x38, 0xd0, 0x13, 0x77, 0xbe, 0x54, 0x66, 0xcf, 0x34, 0xe9, 0x0c, 0x6c, 0xc0, 0xac +#else + 3, 14, 15, 92, 65, 35, 89, 79, 32, 38, + 46, 26, 43, 38, 32, 79, 50, 28, 84, 19, + 71, 69, 39, 93, 75, 10, 58, 20, 97, 49, + 44, 59, 23, 7, 81, 64, 6, 28, 62, 9 +#endif }; -static const guint8 e_hex_digits[] = { +static const guint8 SUFFIX(e_digits)[] = { +#if DOUBLE_RADIX == 2 0x02, 0xb7, 0xe1, 0x51, 0x62, 0x8a, 0xed, 0x2a, 0x6a, 0xbf, 0x71, 0x58, 0x80, 0x9c, 0xf4, 0xf3, 0xc7, 0x62, 0xe7, 0x16, 0x0f, 0x38, 0xb4, 0xda, @@ -135,9 +117,16 @@ 0xef, 0x32, 0x4e, 0x77, 0x38, 0x92, 0x6c, 0xfb, 0xe5, 0xf4, 0xbf, 0x8d, 0x8d, 0x8c, 0x31, 0xd7, 0x63, 0xda, 0x06 +#else + 2, 71, 82, 81, 82, 84, 59, 4, 52, 35, + 36, 2, 87, 47, 13, 52, 66, 24, 97, 75, + 72, 47, 9, 36, 99, 95, 95, 74, 96, 69, + 67, 62, 77, 24, 7, 66, 30, 35, 35, 48 +#endif }; -static const guint8 ln2_hex_digits[] = { +static const guint8 SUFFIX(ln2_digits)[] = { +#if DOUBLE_RADIX == 2 0xb1, 0x72, 0x17, 0xf7, 0xd1, 0xcf, 0x79, 0xab, 0xc9, 0xe3, 0xb3, 0x98, 0x03, 0xf2, 0xf6, 0xaf, 0x40, 0xf3, 0x43, 0x26, 0x72, 0x98, 0xb6, 0x2d, @@ -145,9 +134,31 @@ 0xe7, 0xb8, 0x76, 0x20, 0x6d, 0xeb, 0xac, 0x98, 0x55, 0x95, 0x52, 0xfb, 0x4a, 0xfa, 0x1b, 0x10, 0xed, 0x2e +#else + 69, 31, 47, 18, 5, 59, 94, 53, 9, 41, + 72, 32, 12, 14, 58, 17, 65, 68, 7, 55, + 0, 13, 43, 60, 25, 52, 54, 12, 6, 80, + 0, 94, 93, 39, 36, 21, 96, 96, 94, 72 +#endif +}; + +static const guint8 SUFFIX(ln10_digits)[] = { +#if DOUBLE_RADIX == 2 + 0x02, 0x4d, 0x76, 0x37, 0x76, 0xaa, 0xa2, 0xb0, + 0x5b, 0xa9, 0x5b, 0x58, 0xae, 0x0b, 0x4c, 0x28, + 0xa3, 0x8a, 0x3f, 0xb3, 0xe7, 0x69, 0x77, 0xe4, + 0x3a, 0x0f, 0x18, 0x7a, 0x08, 0x07, 0xc0, 0xb6 +#else + 2, 30, 25, 85, 9, 29, 94, 4, 56, 84, + 1, 79, 91, 45, 46, 84, 36, 42, 7, 60, + 11, 1, 48, 86, 28, 77, 29, 76, 3, 33, + 27, 90, 9, 67, 57, 26, 9, 67, 73, 52 +#endif }; -static const guint8 sqrt2_hex_digits[] = { + +static const guint8 SUFFIX(sqrt2_digits)[] = { +#if DOUBLE_RADIX == 2 0x01, 0x6a, 0x09, 0xe6, 0x67, 0xf3, 0xbc, 0xc9, 0x08, 0xb2, 0xfb, 0x13, 0x66, 0xea, 0x95, 0x7d, 0x3e, 0x3a, 0xde, 0xc1, 0x75, 0x12, 0x77, 0x50, @@ -155,9 +166,16 @@ 0x2a, 0x95, 0xf9, 0x06, 0x08, 0x75, 0x71, 0x45, 0x87, 0x51, 0x63, 0xfc, 0xdf, 0xb9, 0x07, 0xb6, 0x72, 0x1e, 0xe9 +#else + 1, 41, 42, 13, 56, 23, 73, 9, 50, 48, + 80, 16, 88, 72, 42, 9, 69, 80, 78, 56, + 96, 71, 87, 53, 76, 94, 80, 73, 17, 66, + 79, 73, 79, 90, 73, 24, 78, 46, 21, 7 +#endif }; -static const guint8 euler_hex_digits[] = { +static const guint8 SUFFIX(euler_digits)[] = { +#if DOUBLE_RADIX == 2 0x93, 0xc4, 0x67, 0xe3, 0x7d, 0xb0, 0xc7, 0xa4, 0xd1, 0xbe, 0x3f, 0x81, 0x01, 0x52, 0xcb, 0x56, 0xa1, 0xce, 0xcc, 0x3a, 0xf6, 0x5c, 0xc0, 0x19, @@ -165,8 +183,13 @@ 0x8e, 0x4b, 0x59, 0xfa, 0x03, 0xa9, 0xf0, 0xee, 0xd0, 0x64, 0x9c, 0xcb, 0x62, 0x10, 0x57, 0xd1, 0x10, 0x56 -}; +#else + 57, 72, 15, 66, 49, 1, 53, 28, 60, 60, + 65, 12, 9, 0, 82, 40, 24, 31, 4, 21, + 59, 33, 59, 39, 92, 35, 98, 80, 57, 67, + 23, 48, 84, 86, 77, 26, 77, 76, 64, 67 #endif +}; /** * go_quad_start: @@ -175,28 +198,21 @@ * to go_quad_start() and go_quad_end(). * Returns: (transfer full): a pointer to pass to go_quad_end() when done. **/ -/** - * go_quad_startl: - * - * Initializes #GOQuadl arithmetic. Any use of #GOQuadl must occur between calls - * to go_quad_startl() and go_quad_endl(). - * Returns: (transfer full): a pointer to pass to go_quad_endl() when done. - **/ void * SUFFIX(go_quad_start) (void) { void *res = NULL; static gboolean first = TRUE; +#ifdef MIGHT_NEED_FPU_SETUP if (SUFFIX(go_quad_depth)++ > 0) return NULL; if (!SUFFIX(go_quad_functional) () && first) g_warning ("quad precision math may not be completely accurate."); -#ifdef i386 - if (sizeof (DOUBLE) == sizeof (double)) { -#ifdef USE_FPU_CONTROL + #ifdef USE_FPU_CONTROL + { fpu_control_t state, newstate; fpu_control_t mask = _FPU_EXTENDED | _FPU_DOUBLE | _FPU_SINGLE; @@ -206,49 +222,62 @@ newstate = (state & ~mask) | _FPU_DOUBLE; _FPU_SETCW (newstate); -#else - /* Hope for the best. */ -#endif } + #else + /* Hope for the best. */ + #endif #endif if (first) { + DOUBLE base = (DOUBLE_RADIX == 2 ? 256 : 100); first = FALSE; - SUFFIX(CST) = 1 + SUFFIX(ldexp) (1.0, (DOUBLE_MANT_DIG + 1) / 2); + SUFFIX(CST) = 1 + SUFFIX(scalbn) (1, (DOUBLE_MANT_DIG + 1) / 2); SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_pi), - pi_hex_digits, - G_N_ELEMENTS (pi_hex_digits), - 256.0, - 256.0); + SUFFIX(pi_digits), + G_N_ELEMENTS (SUFFIX(pi_digits)), + base, + base); SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_2pi), - pi_hex_digits, - G_N_ELEMENTS (pi_hex_digits), - 256.0, - 512.0); + SUFFIX(pi_digits), + G_N_ELEMENTS (SUFFIX(pi_digits)), + base, + 2 * base); + + SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_pihalf), + SUFFIX(pi_digits), + G_N_ELEMENTS (SUFFIX(pi_digits)), + base, + base / 2); SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_e), - e_hex_digits, - G_N_ELEMENTS (e_hex_digits), - 256.0, - 256.0); + SUFFIX(e_digits), + G_N_ELEMENTS (SUFFIX(e_digits)), + base, + base); SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_ln2), - ln2_hex_digits, - G_N_ELEMENTS (ln2_hex_digits), - 256.0, + SUFFIX(ln2_digits), + G_N_ELEMENTS (SUFFIX(ln2_digits)), + base, 1); + SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_ln10), + SUFFIX(ln10_digits), + G_N_ELEMENTS (SUFFIX(ln10_digits)), + base, + base); + SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_sqrt2), - sqrt2_hex_digits, - G_N_ELEMENTS (sqrt2_hex_digits), - 256.0, - 256.0); + SUFFIX(sqrt2_digits), + G_N_ELEMENTS (SUFFIX(sqrt2_digits)), + base, + base); SUFFIX(go_quad_constant8) (&SUFFIX(go_quad_euler), - euler_hex_digits, - G_N_ELEMENTS (euler_hex_digits), - 256.0, + SUFFIX(euler_digits), + G_N_ELEMENTS (SUFFIX(euler_digits)), + base, 1); } @@ -261,42 +290,51 @@ * * This ends a section of quad precision arithmetic. **/ -/** - * go_quad_endl: - * @state: state pointer from go_quad_startl. - * - * This ends a section of quad precision arithmetic. - **/ void SUFFIX(go_quad_end) (void *state) { +#ifdef MIGHT_NEED_FPU_SETUP SUFFIX(go_quad_depth)--; + if (!state) return; -#ifdef i386 #ifdef USE_FPU_CONTROL _FPU_SETCW (*(fpu_control_t*)state); #endif -#endif g_free (state); +#else + (void)state; +#endif } const QUAD SUFFIX(go_quad_zero) = { 0, 0 }; const QUAD SUFFIX(go_quad_one) = { 1, 0 }; +const QUAD SUFFIX(go_quad_half) = { 0.5, 0 }; /* * The following are non-const so we can initialize them. However, - * from other compilation units there are const. My reading of C99 + * from other compilation units they are const. My reading of C99 * Section 6.2.7 says that is allowed. */ QUAD SUFFIX(go_quad_pi); QUAD SUFFIX(go_quad_2pi); +QUAD SUFFIX(go_quad_pihalf); QUAD SUFFIX(go_quad_e); QUAD SUFFIX(go_quad_ln2); +QUAD SUFFIX(go_quad_ln10); QUAD SUFFIX(go_quad_sqrt2); QUAD SUFFIX(go_quad_euler); +#undef LNBASE +#if DOUBLE_RADIX == 2 +#define LNBASE SUFFIX(go_quad_ln2) +#elif DOUBLE_RADIX == 10 +#define LNBASE SUFFIX(go_quad_ln10) +#else +#error "Code needs fixing" +#endif + /** * go_quad_init: * @res: (out): result location @@ -305,14 +343,6 @@ * This stores the value @h in @res. As an exception, this may be called * outside go_quad_start and go_quad_end sections. **/ -/** - * go_quad_initl: - * @res: (out): result location - * @h: a double precision value - * - * This stores the value @h in @res. As an exception, this may be called - * outside go_quad_startl and go_quad_endl sections. - **/ void SUFFIX(go_quad_init) (QUAD *res, DOUBLE h) { @@ -327,13 +357,6 @@ * Returns: closest double precision value to @a. As an exception, * this may be called outside go_quad_start and go_quad_end sections. **/ -/** - * go_quad_valuel: - * @a: quad-precision value - * - * Returns: closest double precision value to @a. As an exception, - * this may be called outside go_quad_startl and go_quad_endl sections. - **/ DOUBLE SUFFIX(go_quad_value) (const QUAD *a) { @@ -348,14 +371,6 @@ * * This function adds @a and @b, storing the result in @res. **/ -/** - * go_quad_addl: - * @res: (out): result location - * @a: quad-precision value - * @b: quad-precision value - * - * This function adds @a and @b, storing the result in @res. - **/ void SUFFIX(go_quad_add) (QUAD *res, const QUAD *a, const QUAD *b) { @@ -366,7 +381,9 @@ res->h = r + s; res->l = r - res->h + s; +#ifdef MIGHT_NEED_FPU_SETUP g_return_if_fail (SUFFIX(go_quad_depth) > 0); +#endif } /** @@ -377,14 +394,6 @@ * * This function subtracts @a and @b, storing the result in @res. **/ -/** - * go_quad_subl: - * @res: (out): result location - * @a: quad-precision value - * @b: quad-precision value - * - * This function subtracts @a and @b, storing the result in @res. - **/ void SUFFIX(go_quad_sub) (QUAD *res, const QUAD *a, const QUAD *b) { @@ -421,15 +430,6 @@ * This function multiplies @x and @y, storing the result in @res with full * quad precision. **/ -/** - * go_quad_mul12l: - * @res: (out): result location - * @x: double precision value - * @y: double precision value - * - * This function multiplies @x and @y, storing the result in @res with full - * quad precision. - **/ void SUFFIX(go_quad_mul12) (QUAD *res, DOUBLE x, DOUBLE y) { @@ -455,14 +455,6 @@ * * This function multiplies @a and @b, storing the result in @res. **/ -/** - * go_quad_mull: - * @res: (out): result location - * @a: quad-precision value - * @b: quad-precision value - * - * This function multiplies @a and @b, storing the result in @res. - **/ void SUFFIX(go_quad_mul) (QUAD *res, const QUAD *a, const QUAD *b) { @@ -481,14 +473,6 @@ * * This function divides @a and @b, storing the result in @res. **/ -/** - * go_quad_divl: - * @res: (out): result location - * @a: quad-precision value - * @b: quad-precision value - * - * This function divides @a and @b, storing the result in @res. - **/ void SUFFIX(go_quad_div) (QUAD *res, const QUAD *a, const QUAD *b) { @@ -500,6 +484,50 @@ res->l = c.h - res->h + c.l; } +static int +SUFFIX(go_quad_compare) (const QUAD *a, const QUAD *b) +{ + QUAD d; + int sa = a->h < 0; + int sb = b->h < 0; + + if (sa != sb) + return sa ? -1 : +1; + + // Same sign, so no overflow on subtraction. + SUFFIX(go_quad_sub) (&d, a, b); + if (d.h > 0) + return +1; + else if (d.h == 0) + return 0; + else + return -1; +} + +// 1: even integer, 0: non-integer (including inf, nan), -1 odd integer +static int +SUFFIX(go_quad_isint) (QUAD const *x) +{ + QUAD fx, rx; + + SUFFIX(go_quad_floor) (&fx, x); + SUFFIX(go_quad_sub) (&rx, x, &fx); + + if (!(rx.h == 0)) + return 0; + + // If we have a lower part at this point then the upper is even. + return SUFFIX(fmod) (fx.l ? fx.l : fx.h, 2) == 0 ? 1 : -1; +} + +void +SUFFIX(go_quad_scalbn) (QUAD *res, const QUAD *a, int n) +{ + res->h = SUFFIX(scalbn) (a->h, n); + res->l = SUFFIX(scalbn) (a->l, n); +} + + /** * go_quad_sqrt: * @res: (out): result location @@ -507,13 +535,6 @@ * * This function takes the square root of @a, storing the result in @res. **/ -/** - * go_quad_sqrtl: - * @res: (out): result location - * @a: quad-precision value - * - * This function takes the square root of @a, storing the result in @res. - **/ void SUFFIX(go_quad_sqrt) (QUAD *res, const QUAD *a) { @@ -521,7 +542,7 @@ QUAD c, u; c.h = SUFFIX(sqrt) (a->h); SUFFIX(go_quad_mul12) (&u, c.h, c.h); - c.l = (a->h - u.h - u.l + a->l) * 0.5 / c.h; + c.l = (a->h - u.h - u.l + a->l) * HALF / c.h; res->h = c.h + c.l; res->l = c.h - res->h + c.l; } else @@ -535,13 +556,6 @@ * * This function takes the floor of @a, storing the result in @res. **/ -/** - * go_quad_floorl: - * @res: (out): result location - * @a: quad-precision value - * - * This function takes the floor of @a, storing the result in @res. - **/ void SUFFIX(go_quad_floor) (QUAD *res, const QUAD *a) { @@ -571,13 +585,6 @@ * @b: (array length=n): vector of quad-precision values * @n: length of vectors. **/ -/** - * go_quad_dot_productl: - * @res: (out): result location - * @a: (array length=n): vector of quad-precision values - * @b: (array length=n): vector of quad-precision values - * @n: length of vectors. - **/ void SUFFIX(go_quad_dot_product) (QUAD *res, const QUAD *a, const QUAD *b, int n) { @@ -601,51 +608,42 @@ * This function interprets a vector of digits in a given base as a * quad-precision value. It is mostly meant for internal use. **/ -/** - * go_quad_constant8l: - * @res: (out): result location - * @data: (array length=n): vector of digits - * @base: base of vector's elements - * @n: length of digit vector. - * @scale: scaling value after interpreting digits - * - * This function interprets a vector of digits in a given base as a - * quad-precision value. It is mostly meant for internal use. - **/ void SUFFIX(go_quad_constant8) (QUAD *res, const guint8 *data, gsize n, DOUBLE base, DOUBLE scale) { - QUAD qbase, q; + QUAD qbaseinv, q; *res = SUFFIX(go_quad_zero); - SUFFIX(go_quad_init) (&qbase, base); + SUFFIX(go_quad_init) (&qbaseinv, 1 / base); while (n-- > 0) { SUFFIX(go_quad_init) (&q, data[n]); SUFFIX(go_quad_add) (res, res, &q); - SUFFIX(go_quad_div) (res, res, &qbase); + SUFFIX(go_quad_mul) (res, res, &qbaseinv); } SUFFIX(go_quad_init) (&q, scale); SUFFIX(go_quad_mul) (res, res, &q); } +#if DOUBLE_RADIX == 2 static void -SUFFIX(rescale2) (QUAD *x, DOUBLE *e) +SUFFIX(rescale_base) (QUAD *x, DOUBLE *e) { int xe; - (void)SUFFIX(frexp) (SUFFIX(go_quad_value) (x), &xe); + (void)UNSCALBN (SUFFIX(go_quad_value) (x), &xe); if (xe != 0) { QUAD qs; - SUFFIX(go_quad_init) (&qs, SUFFIX(ldexp) (1.0, -xe)); + SUFFIX(go_quad_init) (&qs, SUFFIX(scalbn) (1.0, -xe)); SUFFIX(go_quad_mul) (x, x, &qs); *e += xe; } } +#endif - +#if DOUBLE_RADIX == 2 static void SUFFIX(go_quad_pow_int) (QUAD *res, DOUBLE *exp2, const QUAD *x, const QUAD *y) { @@ -660,13 +658,13 @@ g_return_if_fail (dy >= 0); *res = SUFFIX(go_quad_one); - SUFFIX(rescale2) (&xn, &xe); + SUFFIX(rescale_base) (&xn, &xe); while (dy > 0) { if (SUFFIX(fmod) (dy, 2) > 0) { SUFFIX(go_quad_mul) (res, res, &xn); *exp2 += xe; - SUFFIX(rescale2) (res, exp2); + SUFFIX(rescale_base) (res, exp2); dy--; if (dy == 0) break; @@ -674,9 +672,10 @@ dy /= 2; SUFFIX(go_quad_mul) (&xn, &xn, &xn); xe *= 2; - SUFFIX(rescale2) (&xn, &xe); + SUFFIX(rescale_base) (&xn, &xe); } } +#endif static void SUFFIX(go_quad_sqrt1pm1) (QUAD *res, const QUAD *a) @@ -716,7 +715,7 @@ /* * "1m" mode refers to keeping 1-v instead of just v. */ - x1m = SUFFIX(fabs) (SUFFIX(go_quad_value) (x)) >= 0.5; + x1m = SUFFIX(fabs) (SUFFIX(go_quad_value) (x)) >= HALF; if (x1m) { SUFFIX(go_quad_sub) (&qx, x, &SUFFIX(go_quad_one)); } else { @@ -727,16 +726,18 @@ while ((dy = SUFFIX(go_quad_value) (&qy)) > 0) { SUFFIX(go_quad_add) (&qy, &qy, &qy); - if (x1m) + if (x1m) { SUFFIX(go_quad_sqrt1pm1) (&qx, &qx); - else { + if (SUFFIX(go_quad_value) (&qx) == 0) + break; + } else { SUFFIX(go_quad_sqrt) (&qx, &qx); - if (SUFFIX(go_quad_value) (&qx) >= 0.5) { + if (SUFFIX(go_quad_value) (&qx) >= HALF) { x1m = TRUE; SUFFIX(go_quad_sub) (&qx, &qx, &SUFFIX(go_quad_one)); } } - if (dy >= 0.5) { + if (dy >= HALF) { QUAD qp; SUFFIX(go_quad_sub) (&qy, &qy, &SUFFIX(go_quad_one)); SUFFIX(go_quad_mul) (&qp, &qx, &qr); @@ -784,57 +785,56 @@ /** * go_quad_pow: * @res: (out): result location - * @exp2: (out): (allow-none): power-of-2 result scaling location - * @x: quad-precision value - * @y: quad-precision value - * - * This function computes @x to the power of @y, storing the result in @res. - * If the optional @exp2 is supplied, it is used to return a power of 2 by - * which the result should be scaled. This is useful to represent results - * much, much bigger than double precision can handle. - **/ -/** - * go_quad_powl: - * @res: (out): result location - * @exp2: (out): (allow-none): power-of-2 result scaling location + * @expb: (out): (allow-none): power-of-base result scaling location * @x: quad-precision value * @y: quad-precision value * * This function computes @x to the power of @y, storing the result in @res. - * If the optional @exp2 is supplied, it is used to return a power of 2 by - * which the result should be scaled. This is useful to represent results - * much, much bigger than double precision can handle. + * If the optional @expb is supplied, it is used to return a power of radix + * by which the result should be scaled. Such scaling can be done with the + * scalbn function, typically after combining multiple such terms. This is + * useful to represent results much, much bigger than double precision can + * handle. **/ void -SUFFIX(go_quad_pow) (QUAD *res, DOUBLE *exp2, +SUFFIX(go_quad_pow) (QUAD *res, DOUBLE *expb, const QUAD *x, const QUAD *y) { + if (expb) *expb = 0; + + if (y->h == 0 || SUFFIX(go_quad_compare) (x, &SUFFIX(go_quad_one)) == 0) + return (void)(*res = SUFFIX(go_quad_one)); + if (x->h == 0 && y->h > 0) + return (void)(*res = SUFFIX(go_quad_zero)); + if (SUFFIX(isnan) (x->h)) + return (void)(*res = *x); + if (SUFFIX(isnan) (y->h)) + return (void)(*res = *y); + if (SUFFIX(go_quad_compare) (y, &SUFFIX(go_quad_one)) == 0) + return (void)(*res = *x); + if (x->h > 0 && SUFFIX(go_quad_compare) (y, &SUFFIX(go_quad_half)) == 0) + return SUFFIX(go_quad_sqrt) (res, x); + +#if DOUBLE_RADIX == 2 + // "this is a base-2 algorithm" DOUBLE dy, exp2ew; QUAD qw, qf, qew, qef, qxm1; dy = SUFFIX(go_quad_value) (y); SUFFIX(go_quad_sub) (&qxm1, x, &SUFFIX(go_quad_one)); - if (SUFFIX(go_quad_value) (&qxm1) == 0 || dy == 0) { - *res = SUFFIX(go_quad_one); - if (exp2) *exp2 = 0; - return; - } SUFFIX(go_quad_floor) (&qw, y); SUFFIX(go_quad_sub) (&qf, y, &qw); if (SUFFIX(go_quad_value) (&qxm1) == 0 && dy > 0) { - gboolean wodd = - (SUFFIX(fmod)(SUFFIX(fabs)(qw.h),2) + - SUFFIX(fmod)(SUFFIX(fabs)(qw.l),2)) == 1; - if (SUFFIX(go_quad_value) (&qf) == 0 && wodd) { + int wint = SUFFIX(go_quad_isint) (&qw); + if (SUFFIX(go_quad_value) (&qf) == 0 && wint < 0) { /* 0 ^ (odd positive integer) */ *res = *x; } else { /* 0 ^ y, y positive, but not odd integer */ *res = SUFFIX(go_quad_zero); } - if (exp2) *exp2 = 0; return; } @@ -843,9 +843,9 @@ if (dy < 0) { QUAD my; SUFFIX(go_quad_sub) (&my, &SUFFIX(go_quad_zero), y); - SUFFIX(go_quad_pow) (res, exp2, x, &my); + SUFFIX(go_quad_pow) (res, expb, x, &my); SUFFIX(go_quad_div) (res, &SUFFIX(go_quad_one), res); - if (exp2) *exp2 = 0 - *exp2; + if (expb) *expb = 0 - *expb; return; } @@ -853,43 +853,207 @@ SUFFIX(go_quad_pow_frac) (&qef, x, &qf, FALSE); SUFFIX(go_quad_mul) (res, &qew, &qef); - if (exp2) - *exp2 = exp2ew; + if (expb) + *expb = exp2ew; else { - QUAD qs; int e = CLAMP (exp2ew, G_MININT, G_MAXINT); - SUFFIX(go_quad_init) (&qs, SUFFIX(ldexp)(1.0, e)); - SUFFIX(go_quad_mul) (res, res, &qs); + SUFFIX(go_quad_scalbn) (res, res, e); } +#else + QUAD lx, ax, f10; + gboolean qneg = FALSE; + int e; + DOUBLE er; + + SUFFIX(go_quad_abs) (&ax, x); + + if (x->h < 0) { + int yint = SUFFIX(go_quad_isint) (y); + if (!yint) + return SUFFIX(go_quad_init) (res, go_nan); + qneg = yint < 0; + } + + // x = z * 10^k + // x^y = z^y * 10^(ky) + + ax.h = UNSCALBN (ax.h, &e); + if (ax.h < 1 / SUFFIX(sqrt) (DOUBLE_RADIX)) { + ax.h *= DOUBLE_RADIX; + e--; + } + ax.l = SUFFIX(scalbn) (ax.l, -e); + + if (e == 0) { + er = 0; + f10 = SUFFIX(go_quad_one); + } else { + QUAD fy, qe, qer1, qer2, qr; + + SUFFIX(go_quad_floor) (&fy, y); + SUFFIX(go_quad_init) (&qe, e); + SUFFIX(go_quad_mul) (&qer1, &fy, &qe); + SUFFIX(go_quad_sub) (&fy, y, &fy); + SUFFIX(go_quad_mul) (&qr, &fy, &qe); + SUFFIX(go_quad_floor) (&qer2, &qr); + SUFFIX(go_quad_sub) (&qr, &qr, &qer2); + + SUFFIX(go_quad_add) (&qer1, &qer1, &qer2); + er = SUFFIX(go_quad_value) (&qer1); + + SUFFIX(go_quad_mul) (&f10, &qr, &LNBASE); + SUFFIX(go_quad_exp) (&f10, NULL, &f10); + } + + SUFFIX(go_quad_log) (&lx, &ax); + SUFFIX(go_quad_mul) (&lx, &lx, y); + SUFFIX(go_quad_exp) (res, expb, &lx); + if (expb) { + *expb += er; + } else { + er = CLAMP (er, G_MININT, G_MAXINT); + SUFFIX(go_quad_scalbn) (res, res, er); + } + SUFFIX(go_quad_mul) (res, res, &f10); + if (qneg) + SUFFIX(go_quad_negate) (res, res); +#endif } +#if DOUBLE_RADIX == 10 +static void +SUFFIX(go_quad_exp_taylor) (QUAD *res, QUAD const *x) +{ + QUAD qxn[DOUBLE_DIG * 2 + 10], term[DOUBLE_DIG * 2 + 10]; + QUAD sum = SUFFIX(go_quad_zero); + QUAD qf = SUFFIX(go_quad_one); + unsigned i; + + // We have |x| <= 0.1 except when creating e_parts + + qxn[0] = term[0] = SUFFIX(go_quad_one); + qxn[1] = term[1] = *x; + for (i = 2; i < G_N_ELEMENTS(qxn); i++) { + QUAD qi; + SUFFIX(go_quad_init) (&qi, i); + SUFFIX(go_quad_mul) (&qf, &qf, &qi); + SUFFIX(go_quad_mul) (qxn + i, qxn + (i / 2), qxn + ((i + 1) / 2)); + SUFFIX(go_quad_div) (term + i, qxn + i, &qf); + if (SUFFIX(fabs) (term[i].h) < (DOUBLE_EPSILON * DOUBLE_EPSILON / 100)) + break; + } + + while (i-- > 0) { + // g_printerr ("%d: x^n %.16Wg\n", i, qxn[i].h); + // g_printerr ("%d: term %.16Wg\n", i, term[i].h); + SUFFIX(go_quad_add) (&sum, &sum, term + i); + } + + *res = sum; +} +#endif /** * go_quad_exp: * @res: (out): result location - * @exp2: (out): (allow-none): power-of-2 result scaling location - * @a: quad-precision value - * - * This function computes the exponential function at @a, storing the result - * in @res. If the optional @exp2 is supplied, it is used to return a - * power of 2 by which the result should be scaled. This is useful to - * represent results much, much bigger than double precision can handle. - **/ -/** - * go_quad_expl: - * @res: (out): result location - * @exp2: (out): (allow-none): power-of-2 result scaling location + * @expb: (out): (allow-none): power-of-base result scaling location * @a: quad-precision value * * This function computes the exponential function at @a, storing the result - * in @res. If the optional @exp2 is supplied, it is used to return a - * power of 2 by which the result should be scaled. This is useful to + * in @res. If the optional @expb is supplied, it is used to return a + * power of radix by which the result should be scaled. This is useful to * represent results much, much bigger than double precision can handle. **/ void -SUFFIX(go_quad_exp) (QUAD *res, DOUBLE *exp2, const QUAD *a) +SUFFIX(go_quad_exp) (QUAD *res, DOUBLE *expb, const QUAD *a) { - SUFFIX(go_quad_pow) (res, exp2, &SUFFIX(go_quad_e), a); +#if DOUBLE_RADIX == 2 + SUFFIX(go_quad_pow) (res, expb, &SUFFIX(go_quad_e), a); +#else + DOUBLE pbase, da; + int parts; + QUAD qpbase, qparts, qares, qres; +#if DOUBLE_RADIX == 10 + static const DOUBLE lnbaseparts[] = { + CONST(2.302585092994045), + CONST(.6840179914546843e-15), + CONST(.6420760110148862e-31), + CONST(.8772976033327901e-47) + }; + static QUAD e_parts[24]; // exp(i/10) + if (e_parts[0].h == 0) { + QUAD qtenth = { CONST(1.) / DOUBLE_RADIX, 0 }; + e_parts[0] = SUFFIX(go_quad_one); + SUFFIX(go_quad_exp_taylor) (e_parts + 1, &qtenth); + for (parts = 2; parts < (int)G_N_ELEMENTS(e_parts); parts++) { + if (parts < DOUBLE_RADIX) { + QUAD qtenth = { (_Decimal64)parts / DOUBLE_RADIX, 0 }; + SUFFIX(go_quad_exp_taylor) (e_parts + parts, &qtenth); + } else if (parts == DOUBLE_RADIX) + e_parts[parts] = SUFFIX(go_quad_e); + else + SUFFIX(go_quad_mul) (e_parts + parts, + e_parts + (parts / 2), + e_parts + ((parts + 1) / 2)); + } + } +#endif + + da = SUFFIX(go_quad_value) (a); + if (!SUFFIX(go_finite) (da)) { + if (da < 0) + *res = SUFFIX(go_quad_zero); + else + *res = *a; + if (expb) *expb = 0; + return; + } + + // Extract powers of base + SUFFIX(go_quad_div) (&qpbase, a, &LNBASE); + SUFFIX(go_quad_add) (&qpbase, &qpbase, &SUFFIX(go_quad_half)); + SUFFIX(go_quad_floor) (&qpbase, &qpbase); + pbase = SUFFIX(go_quad_value) (&qpbase); + qares = *a; + for (unsigned i = 0; i < G_N_ELEMENTS(lnbaseparts); i++) { + QUAD qp; + SUFFIX(go_quad_mul12) (&qp, pbase, lnbaseparts[i]); + SUFFIX(go_quad_sub) (&qares, &qares, &qp); + } + + SUFFIX(go_quad_scalbn) (&qparts, &qares, 1); + SUFFIX(go_quad_add) (&qparts, &qparts, &SUFFIX(go_quad_half)); + SUFFIX(go_quad_floor) (&qparts, &qparts); + parts = (int)SUFFIX(go_quad_value) (&qparts); + SUFFIX(go_quad_scalbn) (&qparts, &qparts, -1); + SUFFIX(go_quad_sub) (&qares, &qares, &qparts); + + SUFFIX(go_quad_exp_taylor) (&qres, &qares); + + if (parts >= (int)G_N_ELEMENTS(e_parts) || parts <= -(int)G_N_ELEMENTS(e_parts)) + g_printerr("Something is funky in quad exp.\n"); + else if (parts > 0) { + // g_printerr ("%.16Wg + %.16Wg\n", e_parts[parts].h, e_parts[parts].l); + SUFFIX(go_quad_mul) (&qres, &qres, &e_parts[parts]); + } else if (parts < 0) { + // g_printerr ("%.16Wg + %.16Wg\n", e_parts[-parts].h, e_parts[-parts].l); + SUFFIX(go_quad_div) (&qres, &qres, &e_parts[-parts]); + } + + if (expb) { + DOUBLE m = SUFFIX(go_quad_value) (&qres); + if (0 < m && m < 1) { + pbase--; + SUFFIX(go_quad_scalbn) (&qres, &qres, 1); + } + *expb = pbase; + } else { + pbase = CLAMP (pbase, G_MININT, G_MAXINT); + SUFFIX(go_quad_scalbn) (&qres, &qres, (int)pbase); + } + *res = qres; + +#endif } /** @@ -900,14 +1064,6 @@ * This function computes the exponential function at @a with 1 subtracted, * storing the difference in @res. **/ -/** - * go_quad_expm1l: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the exponential function at @a with 1 subtracted, - * storing the difference in @res. - **/ void SUFFIX(go_quad_expm1) (QUAD *res, const QUAD *a) { @@ -915,7 +1071,7 @@ if (!SUFFIX(go_finite) (da)) *res = *a; - else if (SUFFIX (fabs) (da) > 0.5) { + else if (SUFFIX (fabs) (da) > HALF) { SUFFIX(go_quad_exp) (res, NULL, a); SUFFIX(go_quad_sub) (res, res, &SUFFIX(go_quad_one)); } else if (da >= 0) { @@ -937,14 +1093,6 @@ * This function computes the natural logarithm at @a, storing the result * in @res. **/ -/** - * go_quad_logl: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the natural logarithm at @a, storing the result - * in @res. - **/ void SUFFIX(go_quad_log) (QUAD *res, const QUAD *a) { @@ -957,15 +1105,28 @@ else if (!SUFFIX(go_finite) (da)) *res = *a; else { - QUAD xi, yi, dx; - SUFFIX(go_quad_init) (&xi, SUFFIX(log) (da)); + QUAD as, xi, yi, dx, dl; + int e; - /* Newton step. */ + // Scale down to near 1. + da = UNSCALBN (da, &e); + if (da < 1 / SUFFIX(sqrt) (DOUBLE_RADIX)) e--; + SUFFIX(go_quad_scalbn) (&as, a, -e); + + // Initial approximation + SUFFIX(go_quad_init) (&xi, SUFFIX(log) (as.h)); + + // Newton step. SUFFIX(go_quad_exp) (&yi, NULL, &xi); - SUFFIX(go_quad_sub) (&dx, a, &yi); + SUFFIX(go_quad_sub) (&dx, &as, &yi); SUFFIX(go_quad_div) (&dx, &dx, &yi); SUFFIX(go_quad_add) (&xi, &xi, &dx); + // Adjust for scaling + SUFFIX(go_quad_init) (&dl, e); + SUFFIX(go_quad_mul) (&dl, &LNBASE, &dl); + SUFFIX(go_quad_add) (&xi, &xi, &dl); + *res = xi; } } @@ -976,52 +1137,75 @@ * @a: quad-precision value * @b: quad-precision value * - * This function computes the square root of @a^2 plugs @b^2, storing the - * result in @res. - **/ -/** - * go_quad_hypotl: - * @res: (out): result location - * @a: quad-precision value - * @b: quad-precision value - * - * This function computes the square root of @a^2 plugs @b^2, storing the + * This function computes the square root of @a^2 plus @b^2, storing the * result in @res. **/ void SUFFIX(go_quad_hypot) (QUAD *res, const QUAD *a, const QUAD *b) { int e; - QUAD qa2, qb2, qn; + QUAD qa, qb, qn; + DOUBLE maxh; - if (a->h == 0) { - res->h = SUFFIX(fabs)(b->h); - res->l = SUFFIX(fabs)(b->l); - return; - } - if (b->h == 0) { - res->h = SUFFIX(fabs)(a->h); - res->l = SUFFIX(fabs)(a->l); - return; - } + SUFFIX(go_quad_abs)(&qa, a); + SUFFIX(go_quad_abs)(&qb, b); + + if (qa.h == 0) + return (void)(*res = qb); + if (qb.h == 0) + return (void)(*res = qa); + if (qa.h == (DOUBLE)INFINITY || qb.h == (DOUBLE)INFINITY) + return SUFFIX(go_quad_init) (res, INFINITY); + if (SUFFIX(isnan) (qa.h) || SUFFIX(isnan) (qb.h)) + return SUFFIX(go_quad_init) (res, NAN); + + /* Scale by power of radix to protect against over- and underflow */ + maxh = MAX (qa.h, qb.h); + (void)UNSCALBN (maxh, &e); - /* Scale by power of 2 to protect against over- and underflow */ - (void)SUFFIX(frexp) (MAX (SUFFIX(fabs) (a->h), SUFFIX(fabs) (b->h)), &e); + SUFFIX(go_quad_scalbn) (&qa, &qa, -e); + SUFFIX(go_quad_mul) (&qa, &qa, &qa); - qa2.h = SUFFIX(ldexp) (a->h, -e); - qa2.l = SUFFIX(ldexp) (a->l, -e); - SUFFIX(go_quad_mul) (&qa2, &qa2, &qa2); - - qb2.h = SUFFIX(ldexp) (b->h, -e); - qb2.l = SUFFIX(ldexp) (b->l, -e); - SUFFIX(go_quad_mul) (&qb2, &qb2, &qb2); + SUFFIX(go_quad_scalbn) (&qb, &qb, -e); + SUFFIX(go_quad_mul) (&qb, &qb, &qb); - SUFFIX(go_quad_add) (&qn, &qa2, &qb2); + SUFFIX(go_quad_add) (&qn, &qa, &qb); SUFFIX(go_quad_sqrt) (&qn, &qn); - res->h = SUFFIX(ldexp) (qn.h, e); - res->l = SUFFIX(ldexp) (qn.l, e); + SUFFIX(go_quad_scalbn) (res, &qn, e); } +/** + * go_quad_abs: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the absolute value of @a, storing the result in @res. + **/ +void +SUFFIX(go_quad_abs) (QUAD *res, const QUAD *a) +{ + if (a->h < 0) + SUFFIX(go_quad_negate) (res, a); + else + *res = *a; +} + + +/** + * go_quad_negate: + * @res: (out): result location + * @a: quad-precision value + * + * This function negates @a and stores the result in @res. + **/ +void +SUFFIX(go_quad_negate) (QUAD *res, const QUAD *a) +{ + res->h = -a->h; + res->l = -a->l; +} + + /* sqrt(1-a*a) helper */ static void SUFFIX(go_quad_ihypot) (QUAD *res, const QUAD *a) @@ -1085,7 +1269,7 @@ for (n = 1; n < (int)G_N_ELEMENTS(dk); n++) { SUFFIX(go_quad_add) (&dk[0], &dpk[0], &gp); - dk[0].h *= 0.5; dk[0].l *= 0.5; + SUFFIX(go_quad_mul) (&dk[0], &dk[0], &SUFFIX(go_quad_half)); SUFFIX(go_quad_mul) (&g, &dk[0], &gp); SUFFIX(go_quad_sqrt) (&g, &g); @@ -1093,7 +1277,7 @@ for (k = 1; k <= n; k++) { QUAD f; - SUFFIX(go_quad_init) (&f, SUFFIX(ldexp) (1, -(2 * k))); + SUFFIX(go_quad_init) (&f, go_pow2 (-2 * k)); SUFFIX(go_quad_mul) (&dk[k], &f, &dpk[k-1]); SUFFIX(go_quad_sub) (&dk[k], &dk[k-1], &dk[k]); SUFFIX(go_quad_sub) (&f, &SUFFIX(go_quad_one), &f); @@ -1102,7 +1286,7 @@ SUFFIX(go_quad_div) (&qr, &qnum, &dk[n]); SUFFIX(go_quad_sub) (&qrp, &qrp, &qr); - if (SUFFIX(fabs)(qrp.h) <= SUFFIX(ldexp) (SUFFIX(fabs)(qr.h), -2 * (DOUBLE_MANT_DIG - 1))) { + if (SUFFIX(fabs)(qrp.h) <= SUFFIX(scalbn) (SUFFIX(fabs)(qr.h), -2 * (DOUBLE_MANT_DIG - 1))) { converged = TRUE; break; } @@ -1132,11 +1316,11 @@ } if (dx == 0) { - *f = (dy >= 0 ? 0.5 : -0.5); + *f = (dy >= 0 ? HALF : -HALF); return TRUE; } - if (SUFFIX(fabs) (SUFFIX(fabs)(dx) - SUFFIX(fabs)(dy)) < 1e-10) { + if (SUFFIX(fabs) (SUFFIX(fabs)(dx) - SUFFIX(fabs)(dy)) < (DOUBLE)1e-10) { QUAD d; SUFFIX(go_quad_sub) (&d, x, y); if (d.h == 0) { @@ -1162,15 +1346,6 @@ * This function computes polar angle coordinate of the point (@x,@y), storing * the result in @res. **/ -/** - * go_quad_atan2l: - * @res: (out): result location - * @y: quad-precision value - * @x: quad-precision value - * - * This function computes polar angle coordinate of the point (@x,@y), storing - * the result in @res. - **/ void SUFFIX(go_quad_atan2) (QUAD *res, const QUAD *y, const QUAD *x) { @@ -1180,8 +1355,9 @@ QUAD qr; if (SUFFIX(go_quad_atan2_special) (y, x, &f)) { - res->h = f * SUFFIX(go_quad_pi).h; - res->l = f * SUFFIX(go_quad_pi).l; + QUAD qf; + SUFFIX(go_quad_init) (&qf, f); + SUFFIX(go_quad_mul) (res, &qf, &SUFFIX(go_quad_pi)); return; } @@ -1189,15 +1365,14 @@ SUFFIX(go_quad_div) (&qr, y, x); SUFFIX(go_quad_agm_internal) (res, AGM_ARCTAN, &qr); } else { - DOUBLE f; QUAD qa; SUFFIX(go_quad_div) (&qr, x, y); SUFFIX(go_quad_agm_internal) (res, AGM_ARCTAN, &qr); - f = (qr.h >= 0) ? 0.5 : -0.5; - qa.h = f * SUFFIX(go_quad_pi).h; - qa.l = f * SUFFIX(go_quad_pi).l; + qa = SUFFIX(go_quad_pihalf); + if (qr.h < 0) + SUFFIX(go_quad_negate) (&qa, &qa); SUFFIX(go_quad_sub) (res, &qa, res); } @@ -1219,15 +1394,6 @@ * This function computes polar angle coordinate of the point (@x,@y) divided * by pi, storing the result in @res. **/ -/** - * go_quad_atan2pil: - * @res: (out): result location - * @y: quad-precision value - * @x: quad-precision value - * - * This function computes polar angle coordinate of the point (@x,@y) divided - * by pi, storing the result in @res. - **/ void SUFFIX(go_quad_atan2pi) (QUAD *res, const QUAD *y, const QUAD *x) { @@ -1246,11 +1412,11 @@ static gboolean SUFFIX(reduce_pi_half) (QUAD *res, const QUAD *a, int *pk) { - static QUAD pi_half; - QUAD qa, qk, qh, qb; + QUAD qa, qk, qb; DOUBLE k; unsigned ui; static const DOUBLE pi_half_parts[] = { +#if DOUBLE_RADIX == 2 +0x1.921fb54442d18p+0, +0x1.1a62633145c04p-54, +0x1.707344a40938p-105, @@ -1261,24 +1427,30 @@ +0x1.a431b302b0a6cp-363, +0x1.f25f14374fe1p-415, +0x1.ab6b6a8e122fp-466 +#else + CONST(1.570796326794896), + CONST(6192313216916397e-31), + CONST(5144209858469968e-47), + CONST(7552910487472296e-63), + CONST(1539082031431044e-79), + CONST(9931401741267105e-95), + CONST(8533991074043256e-111), + CONST(6411533235469223e-127), + CONST(0477529111586267e-143), + CONST(9704064240558725e-169) +#endif }; if (!SUFFIX(go_finite) (a->h)) return TRUE; - if (SUFFIX(fabs) (a->h) > SUFFIX(ldexp) (1.0, DOUBLE_MANT_DIG)) { + if (SUFFIX(fabs) (a->h) > 1 / DOUBLE_EPSILON) { g_warning ("Reduced accuracy for very large trigonometric arguments"); return TRUE; } - if (pi_half.h == 0) { - pi_half.h = SUFFIX(go_quad_pi).h * 0.5; - pi_half.l = SUFFIX(go_quad_pi).l * 0.5; - } - - SUFFIX(go_quad_div) (&qk, a, &pi_half); - qh.h = 0.5; qh.l = 0; - SUFFIX(go_quad_add) (&qk, &qk, &qh); + SUFFIX(go_quad_div) (&qk, a, &SUFFIX(go_quad_pihalf)); + SUFFIX(go_quad_add) (&qk, &qk, &SUFFIX(go_quad_half)); SUFFIX(go_quad_floor) (&qk, &qk); k = SUFFIX(go_quad_value) (&qk); *pk = (int)(SUFFIX(fmod) (k, 4)); @@ -1297,18 +1469,17 @@ static void SUFFIX(reduce_half) (QUAD *res, const QUAD *a, int *pk) { - static const QUAD half = { 0.5, 0 }; int k = 0; QUAD qxr = *a; if (a->h < 0) { QUAD aa; - aa.h = -a->h; aa.l = -a->l; + SUFFIX(go_quad_negate) (&aa, a); SUFFIX(reduce_half) (&qxr, &aa, &k); - qxr.h = -qxr.h; qxr.l = -qxr.l; + SUFFIX(go_quad_negate) (&qxr, &qxr); k = 4 - k; - if (qxr.h <= -0.25 && qxr.l == 0) { - SUFFIX(go_quad_add) (&qxr, &qxr, &half); + if (qxr.h <= (DOUBLE)-0.25 && qxr.l == 0) { + SUFFIX(go_quad_add) (&qxr, &qxr, &SUFFIX(go_quad_half)); k += 3; } } else { @@ -1326,12 +1497,12 @@ SUFFIX(go_quad_sub) (&qxr, &qxr, &SUFFIX(go_quad_one)); k += 2; } - if (qxr.h >= 0.5) { - SUFFIX(go_quad_sub) (&qxr, &qxr, &half); + if (qxr.h >= HALF) { + SUFFIX(go_quad_sub) (&qxr, &qxr, &SUFFIX(go_quad_half)); k++; } - if (qxr.h > 0.25) { - SUFFIX(go_quad_sub) (&qxr, &qxr, &half); + if (qxr.h > (DOUBLE)0.25) { + SUFFIX(go_quad_sub) (&qxr, &qxr, &SUFFIX(go_quad_half)); k++; } } @@ -1348,8 +1519,7 @@ if (k & 1) { QUAD qn, qd, qq, aa; - aa.h = SUFFIX(fabs)(a->h); - aa.l = SUFFIX(fabs)(a->l); + SUFFIX(go_quad_abs) (&aa, a); SUFFIX(go_quad_init) (&qr, SUFFIX(cos) (aa.h)); /* Newton step */ @@ -1385,7 +1555,7 @@ if (a->h == 0) SUFFIX(go_quad_init) (&qr, k & 1); - else if (a->h == 0.25 && a->l == 0) + else if (a->h == (DOUBLE)0.25 && a->l == 0) SUFFIX(go_quad_div) (&qr, &SUFFIX(go_quad_one), &SUFFIX(go_quad_sqrt2)); @@ -1410,13 +1580,6 @@ * * This function computes the sine of @a, storing the result in @res. **/ -/** - * go_quad_sinl: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the sine of @a, storing the result in @res. - **/ void SUFFIX(go_quad_sin) (QUAD *res, const QUAD *a) { @@ -1437,14 +1600,6 @@ * This function computes the sine of @a times pi, storing the result in @res. * This is more accurate than actually doing the multiplication. **/ -/** - * go_quad_sinpil: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the sine of @a times pi, storing the result in @res. - * This is more accurate than actually doing the multiplication. - **/ void SUFFIX(go_quad_sinpi) (QUAD *res, const QUAD *a) { @@ -1462,20 +1617,12 @@ * * This function computes the arc sine of @a, storing the result in @res. **/ -/** - * go_quad_asinl: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the arc sine of @a, storing the result in @res. - **/ void SUFFIX(go_quad_asin) (QUAD *res, const QUAD *a) { QUAD aa, aam1; - aa.h = SUFFIX(fabs) (a->h); - aa.l = SUFFIX(fabs) (a->l); + SUFFIX(go_quad_abs) (&aa, a); SUFFIX(go_quad_sub) (&aam1, &aa, &SUFFIX(go_quad_one)); if (aam1.h > 0) { SUFFIX(go_quad_init) (res, SUFFIX(go_nan)); @@ -1492,13 +1639,6 @@ * * This function computes the cosine of @a, storing the result in @res. **/ -/** - * go_quad_cosl: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the cosine of @a, storing the result in @res. - **/ void SUFFIX(go_quad_cos) (QUAD *res, const QUAD *a) { @@ -1519,14 +1659,6 @@ * This function computes the cosine of @a times pi, storing the result in @res. * This is more accurate than actually doing the multiplication. **/ -/** - * go_quad_cospil: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the cosine of @a times pi, storing the result in @res. - * This is more accurate than actually doing the multiplication. - **/ void SUFFIX(go_quad_cospi) (QUAD *res, const QUAD *a) { @@ -1544,20 +1676,12 @@ * * This function computes the arc cosine of @a, storing the result in @res. **/ -/** - * go_quad_acosl: - * @res: (out): result location - * @a: quad-precision value - * - * This function computes the arc cosine of @a, storing the result in @res. - **/ void SUFFIX(go_quad_acos) (QUAD *res, const QUAD *a) { QUAD aa, aam1; - aa.h = SUFFIX(fabs) (a->h); - aa.l = SUFFIX(fabs) (a->l); + SUFFIX(go_quad_abs) (&aa, a); SUFFIX(go_quad_sub) (&aam1, &aa, &SUFFIX(go_quad_one)); if (aam1.h > 0) { SUFFIX(go_quad_init) (res, SUFFIX(go_nan)); @@ -1568,3 +1692,11 @@ if (a->h < 0) SUFFIX(go_quad_sub) (res, &SUFFIX(go_quad_pi), res); } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-quad.h goffice-0.10.57/goffice/math/go-quad.h --- goffice-0.10.56/goffice/math/go-quad.h 2015-05-17 23:20:40.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-quad.h 2024-01-19 20:43:15.000000000 +0000 @@ -21,13 +21,16 @@ void go_quad_sub (GOQuad *res, const GOQuad *a, const GOQuad *b); void go_quad_mul (GOQuad *res, const GOQuad *a, const GOQuad *b); void go_quad_div (GOQuad *res, const GOQuad *a, const GOQuad *b); +void go_quad_scalbn (GOQuad *res, const GOQuad *a, int n); void go_quad_sqrt (GOQuad *res, const GOQuad *a); void go_quad_floor (GOQuad *res, const GOQuad *a); -void go_quad_pow (GOQuad *res, double *exp2, const GOQuad *x, const GOQuad *y); -void go_quad_exp (GOQuad *res, double *exp2, const GOQuad *a); +void go_quad_pow (GOQuad *res, double *expb, const GOQuad *x, const GOQuad *y); +void go_quad_exp (GOQuad *res, double *expb, const GOQuad *a); void go_quad_expm1 (GOQuad *res, const GOQuad *a); void go_quad_log (GOQuad *res, const GOQuad *a); void go_quad_hypot (GOQuad *res, const GOQuad *a, const GOQuad *b); +void go_quad_abs (GOQuad *res, const GOQuad *a); +void go_quad_negate (GOQuad *res, const GOQuad *a); void go_quad_sin (GOQuad *res, const GOQuad *a); void go_quad_sinpi (GOQuad *res, const GOQuad *a); @@ -50,10 +53,13 @@ GO_VAR_DECL const GOQuad go_quad_zero; GO_VAR_DECL const GOQuad go_quad_one; +GO_VAR_DECL const GOQuad go_quad_half; GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_pi; GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_2pi; +GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_pihalf; GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_e; GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_ln2; +GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_ln10; GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_sqrt2; GO_VAR_DECL GO_QUAD_IMPL GOQuad go_quad_euler; @@ -74,13 +80,16 @@ void go_quad_subl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); void go_quad_mull (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); void go_quad_divl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); +void go_quad_scalbnl (GOQuadl *res, const GOQuadl *a, int n); void go_quad_sqrtl (GOQuadl *res, const GOQuadl *a); void go_quad_floorl (GOQuadl *res, const GOQuadl *a); -void go_quad_powl (GOQuadl *res, long double *exp2, const GOQuadl *x, const GOQuadl *y); -void go_quad_expl (GOQuadl *res, long double *exp2, const GOQuadl *a); +void go_quad_powl (GOQuadl *res, long double *expb, const GOQuadl *x, const GOQuadl *y); +void go_quad_expl (GOQuadl *res, long double *expb, const GOQuadl *a); void go_quad_expm1l (GOQuadl *res, const GOQuadl *a); void go_quad_logl (GOQuadl *res, const GOQuadl *a); void go_quad_hypotl (GOQuadl *res, const GOQuadl *a, const GOQuadl *b); +void go_quad_absl (GOQuadl *res, const GOQuadl *a); +void go_quad_negatel (GOQuadl *res, const GOQuadl *a); void go_quad_sinl (GOQuadl *res, const GOQuadl *a); void go_quad_sinpil (GOQuadl *res, const GOQuadl *a); @@ -100,15 +109,75 @@ GO_VAR_DECL const GOQuadl go_quad_zerol; GO_VAR_DECL const GOQuadl go_quad_onel; +GO_VAR_DECL const GOQuadl go_quad_halfl; GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_pil; GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_2pil; +GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_pihalfl; GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_el; GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_ln2l; +GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_ln10l; GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_sqrt2l; GO_VAR_DECL GO_QUAD_IMPL GOQuadl go_quad_eulerl; #endif +#ifdef GOFFICE_WITH_DECIMAL64 +struct GOQuadD_ { + _Decimal64 h; + _Decimal64 l; +}; + +gboolean go_quad_functionalD (void); +void *go_quad_startD (void); +void go_quad_endD (void *state); + +void go_quad_initD (GOQuadD *res, _Decimal64 h); + +_Decimal64 go_quad_valueD (const GOQuadD *a); +void go_quad_addD (GOQuadD *res, const GOQuadD *a, const GOQuadD *b); +void go_quad_subD (GOQuadD *res, const GOQuadD *a, const GOQuadD *b); +void go_quad_mulD (GOQuadD *res, const GOQuadD *a, const GOQuadD *b); +void go_quad_divD (GOQuadD *res, const GOQuadD *a, const GOQuadD *b); +void go_quad_scalbnD (GOQuadD *res, const GOQuadD *a, int n); +void go_quad_sqrtD (GOQuadD *res, const GOQuadD *a); +void go_quad_floorD (GOQuadD *res, const GOQuadD *a); +void go_quad_powD (GOQuadD *res, _Decimal64 *expb, const GOQuadD *x, const GOQuadD *y); +void go_quad_expD (GOQuadD *res, _Decimal64 *expb, const GOQuadD *a); +void go_quad_expm1D (GOQuadD *res, const GOQuadD *a); +void go_quad_logD (GOQuadD *res, const GOQuadD *a); +void go_quad_hypotD (GOQuadD *res, const GOQuadD *a, const GOQuadD *b); +void go_quad_absD (GOQuadD *res, const GOQuadD *a); +void go_quad_negateD (GOQuadD *res, const GOQuadD *a); + +void go_quad_sinD (GOQuadD *res, const GOQuadD *a); +void go_quad_sinpiD (GOQuadD *res, const GOQuadD *a); +void go_quad_asinD (GOQuadD *res, const GOQuadD *a); +void go_quad_cosD (GOQuadD *res, const GOQuadD *a); +void go_quad_cospiD (GOQuadD *res, const GOQuadD *a); +void go_quad_acosD (GOQuadD *res, const GOQuadD *a); +void go_quad_atan2D (GOQuadD *res, const GOQuadD *y, const GOQuadD *x); +void go_quad_atan2piD (GOQuadD *res, const GOQuadD *y, const GOQuadD *x); + +void go_quad_mul12D (GOQuadD *res, _Decimal64 x, _Decimal64 y); + +void go_quad_dot_productD (GOQuadD *res, + const GOQuadD *a, const GOQuadD *b, int n); + +void go_quad_constant8D (GOQuadD *res, const guint8 *data, gsize n, _Decimal64 base, _Decimal64 scale); + +GO_VAR_DECL const GOQuadD go_quad_zeroD; +GO_VAR_DECL const GOQuadD go_quad_oneD; +GO_VAR_DECL const GOQuadD go_quad_halfD; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_piD; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_2piD; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_pihalfD; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_eD; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_ln2D; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_ln10D; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_sqrt2D; +GO_VAR_DECL GO_QUAD_IMPL GOQuadD go_quad_eulerD; +#endif + G_END_DECLS #endif diff -Nru goffice-0.10.56/goffice/math/go-rangefunc.c goffice-0.10.57/goffice/math/go-rangefunc.c --- goffice-0.10.56/goffice/math/go-rangefunc.c 2022-12-28 22:29:20.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-rangefunc.c 2024-01-19 20:43:15.000000000 +0000 @@ -28,32 +28,10 @@ #include #include -#ifndef DOUBLE - -#define DOUBLE double -#ifdef HAVE_LONG_DOUBLE -#define LDOUBLE long double -#endif -#define SUFFIX(_n) _n - -#ifdef GOFFICE_WITH_LONG_DOUBLE -#include "go-rangefunc.c" -#undef DOUBLE -#undef LDOUBLE -#undef SUFFIX - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#endif - -#endif - -#ifndef LDOUBLE -#define LDOUBLE DOUBLE -#endif +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS /* ------------------------------------------------------------------------- */ @@ -310,14 +288,14 @@ DOUBLE fpos, residual; int pos; - if (n <= 0 || f < 0.0 || f > 1.0) + if (n <= 0 || f < 0 || f > 1) return 1; fpos = (n - 1) * f; pos = (int)fpos; residual = fpos - pos; - if (residual == 0.0 || pos + 1 >= n) + if (residual == 0 || pos + 1 >= n) *res = xs[pos]; else *res = (1 - residual) * xs[pos] + residual * xs[pos + 1]; @@ -472,3 +450,11 @@ { return SUFFIX(go_range_increasing) (xs, n) || SUFFIX(go_range_decreasing) (xs, n); } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-rangefunc.h goffice-0.10.57/goffice/math/go-rangefunc.h --- goffice-0.10.56/goffice/math/go-rangefunc.h 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-rangefunc.h 2024-01-19 20:43:15.000000000 +0000 @@ -44,6 +44,27 @@ long double *go_range_sortl (long double const *xs, int n); #endif +#ifdef GOFFICE_WITH_DECIMAL64 +int go_range_sumD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_sumsqD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_averageD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_minD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_maxD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_maxabsD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_devsqD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_fractile_interD (_Decimal64 const *xs, int n, _Decimal64 *res, _Decimal64 f); +int go_range_fractile_inter_nonconstD (_Decimal64 *xs, int n, _Decimal64 *res, _Decimal64 f); +int go_range_fractile_inter_sortedD (_Decimal64 const *xs, int n, _Decimal64 *res, _Decimal64 f); +int go_range_median_interD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_median_inter_nonconstD (_Decimal64 *xs, int n, _Decimal64 *res); +int go_range_median_inter_sortedD (_Decimal64 const *xs, int n, _Decimal64 *res); +int go_range_constantD (_Decimal64 const *xs, int n); +int go_range_increasingD (_Decimal64 const *xs, int n); +int go_range_decreasingD (_Decimal64 const *xs, int n); +int go_range_vary_uniformlyD (_Decimal64 const *xs, int n); +_Decimal64 *go_range_sortD (_Decimal64 const *xs, int n); +#endif + G_END_DECLS #endif /* GO_RANGEFUNC_H */ diff -Nru goffice-0.10.56/goffice/math/go-regression.c goffice-0.10.57/goffice/math/go-regression.c --- goffice-0.10.56/goffice/math/go-regression.c 2016-10-02 18:26:35.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-regression.c 2024-01-19 20:43:15.000000000 +0000 @@ -32,6 +32,20 @@ #include #include +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include + +#ifdef SKIP_THIS_PASS + +// Stub for the benefit of gtk-doc +GType INFIX(go_regression_stat,_get_type) (void); +GType INFIX(go_regression_stat,_get_type) (void) { return 0; } + +#else + +/* ------------------------------------------------------------------------- */ + /** * GORegressionResult: * @GO_REG_ok: success. @@ -85,48 +99,9 @@ * @var: the variance of the entire regression: sum(errors^2)/(n-xdim). **/ -/* ------------------------------------------------------------------------- */ -/* Self-inclusion magic. */ - -#ifndef DOUBLE - -#define DEFAULT_THRESHOLD (256 * DOUBLE_EPS) - +#define DEFAULT_THRESHOLD (256 * DOUBLE_EPSILON) -#define DEFINE_COMMON -#define DOUBLE double -#define DOUBLE_EPS DBL_EPSILON -#define SUFFIX(_n) _n -#define FORMAT_f "f" -#define FORMAT_g "g" - -#ifdef GOFFICE_WITH_LONG_DOUBLE - -#include "go-regression.c" -#undef DEFINE_COMMON -#undef DOUBLE -#undef DOUBLE_EPS -#undef SUFFIX -#undef FORMAT_f -#undef FORMAT_g -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define DOUBLE_EPS LDBL_EPSILON -#define SUFFIX(_n) _n ## l -#define FORMAT_f "Lf" -#define FORMAT_g "Lg" -#else -/* It appears that gtk-doc is too dumb to handle this file. Provide - a dummy type getter to make things work. */ -GType go_regression_statl_get_type (void); -GType go_regression_statl_get_type (void) { return G_TYPE_NONE; } -#endif - -#endif - -/* Boxed types code */ +// Boxed types code static SUFFIX(go_regression_stat_t) * SUFFIX(go_regression_stat_ref) (SUFFIX(go_regression_stat_t)* state) @@ -136,21 +111,13 @@ } GType -#ifdef DEFINE_COMMON -go_regression_stat_get_type (void) -#else -go_regression_statl_get_type (void) -#endif +INFIX(go_regression_stat,_get_type) (void) { static GType t = 0; if (t == 0) { t = g_boxed_type_register_static ( -#ifdef DEFINE_COMMON - "go_regression_stat_t", -#else - "go_regression_stat_tl", -#endif + "go_regression_stat_t" SUFFIX_STR, (GBoxedCopyFunc)SUFFIX(go_regression_stat_ref), (GBoxedFreeFunc)SUFFIX(go_regression_stat_destroy)); } @@ -253,8 +220,7 @@ * */ -static SUFFIX(GOQuadMatrix) -* +static SUFFIX(GOQuadMatrix) * SUFFIX(quad_matrix_from_matrix) (CONSTMATRIX A, int m, int n, DOUBLE *scale) { int i, j; @@ -487,11 +453,11 @@ /* * Pick a scale such that the largest value will be in the - * range [1;2[. The scale will be a power of 2 so scaling - * doesn't introduce rounding errors of it own. + * range [1;RADIX[. The scale will be a power of radix so + * scaling doesn't introduce rounding errors of it own. */ - (void) SUFFIX(frexp) (M, &e); - return SUFFIX(ldexp) (1.0, e - 1); + (void)UNSCALBN (M, &e); + return SUFFIX(scalbn) (1.0, e - 1); } /* ------------------------------------------------------------------------- */ @@ -769,7 +735,7 @@ SUFFIX(modf) (c_accuracy, &c_accuracy_int); c_accuracy = c_accuracy_int; c_accuracy = SUFFIX(pow) (10, c_accuracy); - c_accuracy *= GO_LOGFIT_C_ACCURACY; + c_accuracy *= (DOUBLE)GO_LOGFIT_C_ACCURACY; /* Determine sign. Take a c which is ``much to small'' since the part * of the curve cutting the point cloud is almost not bent. @@ -777,8 +743,8 @@ * assume that we have to change the direction of curve bending * by changing sign. */ - c_step = x_range * GO_LOGFIT_C_STEP_FACTOR; - c_range = x_range * GO_LOGFIT_C_RANGE_FACTOR; + c_step = x_range * (DOUBLE)GO_LOGFIT_C_STEP_FACTOR; + c_range = x_range * (DOUBLE)GO_LOGFIT_C_RANGE_FACTOR; res[0] = 1; /* sign */ res[3] = point_cloud->min_x - c_range; temp_res[0] = 1; @@ -866,7 +832,7 @@ SUFFIX(transform_x_and_linear_regression_log_fitting) (xs, transf_xs, ys, n, res, point_cloud); - if ((res[0] * (res[3] - c_end)) < (1.1 * c_accuracy)) { + if ((res[0] * (res[3] - c_end)) < (CONST(1.1) * c_accuracy)) { /* Allowing for some inaccuracy, we are at the end of the * range, so this is probably no local minimum. * The start of the range has been checked above. */ @@ -888,7 +854,7 @@ * @n: number of data points. * @affine: if true, a non-zero constant is allowed. * @res: (out): place for constant[0] and slope1[1], slope2[2],... There will be dim+1 results. - * @stat_: (out): non-NULL storage for additional results. + * @stat_: (out): storage for additional results. * * Performs multi-dimensional linear regressions on the input points. * Fits to "y = b + a1 * x1 + ... ad * xd". @@ -939,7 +905,7 @@ * @n: number of data points * @affine: if %TRUE, a non-one multiplier is allowed * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. - * @stat_: non-NULL storage for additional results. + * @stat_: (out) (optional): storage for additional results. * * Performs one-dimensional linear regressions on the input points. * Fits to "y = b * m1^x1 * ... * md^xd " or equivalently to @@ -972,7 +938,7 @@ * @n: number of data points * @affine: if %TRUE, a non-one multiplier is allowed * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. - * @stat_: non-NULL storage for additional results. + * @stat_: (out) (optional): storage for additional results. * * Performs one-dimensional linear regressions on the input points as * go_exponential_regression, but returns the logarithm of the coefficients instead @@ -1040,7 +1006,7 @@ * @n: number of data points * @affine: if %TRUE, a non-one multiplier is allowed * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. - * @stat_: non-NULL storage for additional results. + * @stat_: (out) (optional): storage for additional results. * * Performs one-dimensional linear regressions on the input points. * Fits to "y = b * x1^m1 * ... * xd^md " or equivalently to @@ -1119,7 +1085,7 @@ * @n: number of data points * @affine: if %TRUE, a non-zero constant is allowed * @res: output place for constant[0] and factor1[1], factor2[2],... There will be dim+1 results. - * @stat_: non-NULL storage for additional results. + * @stat_: (out) (optional): storage for additional results. * * This is almost a copy of linear_regression and produces multi-dimensional * linear regressions on the input points after transforming xss to ln(xss). @@ -1298,7 +1264,7 @@ /* ------------------------------------------------------------------------- */ #ifdef DEFINE_COMMON -#define DELTA 0.01 +#define DELTA CONST(0.01) /* FIXME: I pulled this number out of my hat. * I need some testing to pick a sensible value. */ @@ -1587,28 +1553,6 @@ * values. * The resulting parameters are placed back into @par. **/ -/** - * go_non_linear_regressionl: - * @f: (scope call): the model function - * @xvals: independent values. - * @par: model parameters. - * @yvals: dependent values. - * @sigmas: stahdard deviations for the dependent values. - * @x_dim: Number of data points. - * @p_dim: Number of parameters. - * @chi: Chi Squared of the final result. This value is not very - * meaningful without the sigmas. - * @errors: MUST ALREADY BE ALLOCATED. These are the approximated standard - * deviation for each parameter. - * - * SYNOPSIS: - * result = non_linear_regression (f, xvals, par, yvals, sigmas, - * x_dim, p_dim, &chi, errors) - * Non linear regression. - * Returns: the results of the non-linear regression from the given initial - * values. - * The resulting parameters are placed back into @par. - **/ GORegressionResult SUFFIX(go_non_linear_regression) (SUFFIX(GORegressionFunction) f, MATRIX xvals, /* The entire data set. */ @@ -1831,3 +1775,11 @@ } SUFFIX(go_quad_end) (state); } + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/math/go-regression.h goffice-0.10.57/goffice/math/go-regression.h --- goffice-0.10.56/goffice/math/go-regression.h 2018-11-25 01:42:04.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-regression.h 2024-01-19 20:43:15.000000000 +0000 @@ -74,7 +74,7 @@ /* Final accuracy of c is: width of x-range rounded to the next smaller * (10^integer), the result times GO_LOGFIT_C_ACCURACY. * If you change it, remember to change the help-text for LOGFIT. - * FIXME: Is there a way to stringify this macros value for the help-text? */ + * FIXME: Is there a way to stringify this macro's value for the help-text? */ #define GO_LOGFIT_C_ACCURACY 0.000001 /* Stepwidth for testing for sign is: width of x-range @@ -117,6 +117,7 @@ GORegressionResult go_linear_solve_multiple (double *const *const A, double **B, int n, int bn); +// ---------------------------------------------------------------------------- #ifdef GOFFICE_WITH_LONG_DOUBLE typedef struct { @@ -208,6 +209,100 @@ #endif +// ---------------------------------------------------------------------------- + +#ifdef GOFFICE_WITH_DECIMAL64 +typedef struct { + _Decimal64 *se; /*SE for each parameter estimator*/ + _Decimal64 *t; /*t values for each parameter estimator*/ + _Decimal64 sqr_r; + _Decimal64 adj_sqr_r; + _Decimal64 se_y; /* The Standard Error of Y */ + _Decimal64 F; + int df_reg; + int df_resid; + int df_total; + _Decimal64 ss_reg; + _Decimal64 ss_resid; + _Decimal64 ss_total; + _Decimal64 ms_reg; + _Decimal64 ms_resid; + _Decimal64 ybar; + _Decimal64 *xbar; + _Decimal64 var; /* The variance of the entire regression: + sum(errors^2)/(n-xdim) */ + /**/ + unsigned int ref_count; +} go_regression_stat_tD; +#define GORegressionStatD go_regression_stat_tD + +GType go_regression_statD_get_type (void); +go_regression_stat_tD *go_regression_stat_newD (void); +void go_regression_stat_destroyD (go_regression_stat_tD *stat_); + +GORegressionResult go_linear_regressionD (_Decimal64 **xss, int dim, + const _Decimal64 *ys, int n, + gboolean affine, + _Decimal64 *res, + go_regression_stat_tD *stat_); +GORegressionResult go_linear_regression_leverageD (_Decimal64 **A, + _Decimal64 *d, + int m, int n); +GORegressionResult go_exponential_regressionD (_Decimal64 **xss, int dim, + const _Decimal64 *ys, int n, + gboolean affine, + _Decimal64 *res, + go_regression_stat_tD *stat_); +GORegressionResult go_exponential_regression_as_logD (_Decimal64 **xss, int dim, + const _Decimal64 *ys, int n, + gboolean affine, + _Decimal64 *res, + go_regression_stat_tD *stat_); +GORegressionResult go_power_regressionD (_Decimal64 **xss, int dim, + const _Decimal64 *ys, int n, + gboolean affine, + _Decimal64 *res, + go_regression_stat_tD *stat_); +GORegressionResult go_logarithmic_regressionD(_Decimal64 **xss, int dim, + const _Decimal64 *ys, int n, + gboolean affine, + _Decimal64 *res, + go_regression_stat_tD *stat_); +GORegressionResult go_logarithmic_fitD (_Decimal64 *xs, + const _Decimal64 *ys, int n, + _Decimal64 *res); + +typedef GORegressionResult (*GORegressionFunctionD) (_Decimal64 * x, _Decimal64 * params, _Decimal64 *f); + +GORegressionResult go_non_linear_regressionD (GORegressionFunctionD f, + _Decimal64 **xvals, + _Decimal64 *par, + _Decimal64 *yvals, + _Decimal64 *sigmas, + int x_dim, + int p_dim, + _Decimal64 *chi, + _Decimal64 *errors); + +gboolean go_matrix_invertD (_Decimal64 **A, int n); +_Decimal64 go_matrix_determinantD (_Decimal64 *const * const A, int n); + +void go_matrix_pseudo_inverseD (_Decimal64 *const * const A, int m, int n, + _Decimal64 threshold, + _Decimal64 **B); + +GORegressionResult go_linear_solveD (_Decimal64 *const *const A, + const _Decimal64 *b, + int n, + _Decimal64 *res); +GORegressionResult go_linear_solve_multipleD (_Decimal64 *const *const A, + _Decimal64 **B, + int n, int bn); + +#endif + +// ---------------------------------------------------------------------------- + G_END_DECLS #endif /* GO_UTILS_REGRESSION_H */ diff -Nru goffice-0.10.56/goffice/math/go-ryu.c goffice-0.10.57/goffice/math/go-ryu.c --- goffice-0.10.56/goffice/math/go-ryu.c 2023-05-20 23:02:02.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-ryu.c 2023-12-03 01:18:44.000000000 +0000 @@ -1,57 +1,10 @@ #define RYU_OPTIMIZE_SIZE 1 -#define bool int +#define bool _Bool #include "go-ryu.h" -// File ryu.h imported from ryu -// Copyright 2018 Ulf Adams -// -// The contents of this file may be used under the terms of the Apache License, -// Version 2.0. -// -// (See accompanying file LICENSE-Apache or copy at -// http://www.apache.org/licenses/LICENSE-2.0) -// -// Alternatively, the contents of this file may be used under the terms of -// the Boost Software License, Version 1.0. -// (See accompanying file LICENSE-Boost or copy at -// https://www.boost.org/LICENSE_1_0.txt) -// -// Unless required by applicable law or agreed to in writing, this software -// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. -#ifndef RYU_H -#define RYU_H - -#ifdef __cplusplus -extern "C" { -#endif - #include -int go_ryu_d2s_buffered_n(double f, char* result); -void go_ryu_d2s_buffered(double f, char* result); -char* go_ryu_d2s(double f); - -int go_ryu_f2s_buffered_n(float f, char* result); -void go_ryu_f2s_buffered(float f, char* result); -char* go_ryu_f2s(float f); - -int go_ryu_d2fixed_buffered_n(double d, uint32_t precision, char* result); -void go_ryu_d2fixed_buffered(double d, uint32_t precision, char* result); -char* go_ryu_d2fixed(double d, uint32_t precision); - -int go_ryu_d2exp_buffered_n(double d, uint32_t precision, char* result); -void go_ryu_d2exp_buffered(double d, uint32_t precision, char* result); -char* go_ryu_d2exp(double d, uint32_t precision); - -#ifdef __cplusplus -} -#endif - -#endif // RYU_H -// End of file ryu.h imported from ryu - // File common.h imported from ryu // Copyright 2018 Ulf Adams // @@ -140,15 +93,16 @@ static inline int copy_special_str(char * const result, const bool sign, const bool exponent, const bool mantissa) { if (mantissa) { - memcpy(result, "NaN", 3); - return 3; + if (sign) result[0] = '-'; + memcpy(result + sign, "nan", 3); // String changed to match musl's fmt_fp + return sign + 3; } if (sign) { result[0] = '-'; } if (exponent) { - memcpy(result + sign, "Infinity", 8); - return sign + 8; + memcpy(result + sign, "inf", 3); // String changed to match musl's fmt_fp + return sign + 3; } memcpy(result + sign, "0E0", 3); return sign + 3; @@ -1242,20 +1196,25 @@ return to_chars(v, ieeeSign, result); } -void go_ryu_d2s_buffered(double f, char* result) { +#if 0 +static void go_ryu_d2s_buffered(double f, char* result) { const int index = go_ryu_d2s_buffered_n(f, result); // Terminate the string. result[index] = '\0'; } +#endif -char* go_ryu_d2s(double f) { +#if 0 +static char* go_ryu_d2s(double f) { char* const result = (char*) malloc(25); go_ryu_d2s_buffered(f, result); return result; } +#endif // End of file d2s.c imported from ryu +#ifdef GOFFICE_WITH_LONG_DOUBLE // File ryu_generic_128.h imported from ryu // Copyright 2018 Ulf Adams // @@ -1303,16 +1262,20 @@ bool sign; }; -struct floating_decimal_128 go_ryu_float_to_fd128(float f); -struct floating_decimal_128 go_ryu_double_to_fd128(double d); +#if 0 +static struct floating_decimal_128 go_ryu_float_to_fd128(float f); +#endif +#if 0 +static struct floating_decimal_128 go_ryu_double_to_fd128(double d); +#endif // According to wikipedia (https://en.wikipedia.org/wiki/Long_double), this likely only works on // x86 with specific compilers (clang?). May need an ifdef. -struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d); +static struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d); // Converts the given binary floating point number to the shortest decimal floating point number // that still accurately represents it. -struct floating_decimal_128 go_ryu_generic_binary_to_decimal( +static struct floating_decimal_128 go_ryu_generic_binary_to_decimal( const __uint128_t bits, const uint32_t mantissaBits, const uint32_t exponentBits, const bool explicitLeadingBit); // Converts the given decimal floating point number to a string, writing to result, and returning @@ -1322,7 +1285,7 @@ // Maximal char buffer requirement: // sign + mantissa digits + decimal dot + 'E' + exponent sign + exponent digits // = 1 + 39 + 1 + 1 + 1 + 10 = 53 -int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result); +static int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result); #ifdef __cplusplus } @@ -1330,7 +1293,9 @@ #endif // RYU_GENERIC_128_H // End of file ryu_generic_128.h imported from ryu +#endif // GOFFICE_WITH_LONG_DOUBLE +#ifdef GOFFICE_WITH_LONG_DOUBLE // File generic_128.h imported from ryu // Copyright 2018 Ulf Adams // @@ -1852,7 +1817,9 @@ #endif // RYU_GENERIC128_H // End of file generic_128.h imported from ryu +#endif // GOFFICE_WITH_LONG_DOUBLE +#ifdef GOFFICE_WITH_LONG_DOUBLE // File generic_128.c imported from ryu // Copyright 2018 Ulf Adams // @@ -1903,25 +1870,29 @@ #define FLOAT_MANTISSA_BITS 23 #define FLOAT_EXPONENT_BITS 8 -struct floating_decimal_128 go_ryu_float_to_fd128(float f) { +#if 0 +static struct floating_decimal_128 go_ryu_float_to_fd128(float f) { uint32_t bits = 0; memcpy(&bits, &f, sizeof(float)); return go_ryu_generic_binary_to_decimal(bits, FLOAT_MANTISSA_BITS, FLOAT_EXPONENT_BITS, false); } +#endif #define DOUBLE_MANTISSA_BITS 52 #define DOUBLE_EXPONENT_BITS 11 -struct floating_decimal_128 go_ryu_double_to_fd128(double d) { +#if 0 +static struct floating_decimal_128 go_ryu_double_to_fd128(double d) { uint64_t bits = 0; memcpy(&bits, &d, sizeof(double)); return go_ryu_generic_binary_to_decimal(bits, DOUBLE_MANTISSA_BITS, DOUBLE_EXPONENT_BITS, false); } +#endif #define LONG_DOUBLE_MANTISSA_BITS 64 #define LONG_DOUBLE_EXPONENT_BITS 15 -struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d) { +static struct floating_decimal_128 go_ryu_long_double_to_fd128(long double d) { uint128_t bits = 0; memcpy(&bits, &d, sizeof(long double)); #ifdef RYU_DEBUG @@ -1934,7 +1905,7 @@ return go_ryu_generic_binary_to_decimal(bits, LONG_DOUBLE_MANTISSA_BITS, LONG_DOUBLE_EXPONENT_BITS, true); } -struct floating_decimal_128 go_ryu_generic_binary_to_decimal( +static struct floating_decimal_128 go_ryu_generic_binary_to_decimal( const uint128_t bits, const uint32_t mantissaBits, const uint32_t exponentBits, const bool explicitLeadingBit) { #ifdef RYU_DEBUG printf("IN="); @@ -2137,17 +2108,18 @@ static inline int copy_special_strl(char * const result, const struct floating_decimal_128 fd) { if (fd.mantissa) { - memcpy(result, "NaN", 3); - return 3; + if (fd.sign) result[0] = '-'; + memcpy(result + fd.sign, "nan", 3); // String changed to match musl's fmt_fp + return fd.sign + 3; } if (fd.sign) { result[0] = '-'; } - memcpy(result + fd.sign, "Infinity", 8); - return fd.sign + 8; + memcpy(result + fd.sign, "inf", 3); // String changed to match musl's fmt_fp + return fd.sign + 3; } -int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result) { +static int go_ryu_generic_to_chars(const struct floating_decimal_128 v, char* const result) { if (v.exponent == FD128_EXCEPTIONAL_EXPONENT) { return copy_special_strl(result, v); } @@ -2200,9 +2172,12 @@ return index; } // End of file generic_128.c imported from ryu +#endif // GOFFICE_WITH_LONG_DOUBLE +#ifdef GOFFICE_WITH_LONG_DOUBLE int go_ryu_ld2s_buffered_n (long double d, char *dst) { struct floating_decimal_128 fd128 = go_ryu_long_double_to_fd128(d); return go_ryu_generic_to_chars(fd128, dst); } +#endif diff -Nru goffice-0.10.56/goffice/math/go-ryu.h goffice-0.10.57/goffice/math/go-ryu.h --- goffice-0.10.56/goffice/math/go-ryu.h 2023-05-20 22:48:32.000000000 +0000 +++ goffice-0.10.57/goffice/math/go-ryu.h 2023-11-05 19:32:59.000000000 +0000 @@ -9,7 +9,9 @@ /* ------------------------------------------------------------------------- */ int go_ryu_d2s_buffered_n (double d, char *dst); +#ifdef GOFFICE_WITH_LONG_DOUBLE int go_ryu_ld2s_buffered_n (long double d, char *dst); +#endif /* ------------------------------------------------------------------------- */ diff -Nru goffice-0.10.56/goffice/math/goffice-math.h goffice-0.10.57/goffice/math/goffice-math.h --- goffice-0.10.56/goffice/math/goffice-math.h 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/math/goffice-math.h 2024-01-19 20:43:15.000000000 +0000 @@ -14,6 +14,13 @@ typedef struct GOQuadQRl_ GOQuadQRl; #endif +#ifdef GOFFICE_WITH_DECIMAL64 +typedef struct GOAccumulatorD_ GOAccumulatorD; +typedef struct GOQuadD_ GOQuadD; +typedef struct GOQuadMatrixD_ GOQuadMatrixD; +typedef struct GOQuadQRD_ GOQuadQRD; +#endif + #include #include #include @@ -27,5 +34,8 @@ #include #include #include +#if GOFFICE_WITH_DECIMAL64 +#include +#endif #endif diff -Nru goffice-0.10.56/goffice/outoflinedocs.c goffice-0.10.57/goffice/outoflinedocs.c --- goffice-0.10.56/goffice/outoflinedocs.c 1970-01-01 00:00:00.000000000 +0000 +++ goffice-0.10.57/goffice/outoflinedocs.c 2024-01-19 20:43:15.000000000 +0000 @@ -0,0 +1,1933 @@ +/* + * Documentation for those functions where inline documentation is + * not appropriate, either because the source code was imported + * from elsewhere or because it's basically a copy of documentation + * for a symbol for another number system. + */ + + +// --- BEGIN AUTO-GENERATED DOCUMENTATION MARKER --- + +/** + * go_accumulator_addD: (skip) + **/ + +/** + * go_accumulator_add_quadD: (skip) + **/ + +/** + * go_accumulator_add_quadl: (skip) + **/ + +/** + * go_accumulator_addl: (skip) + **/ + +/** + * go_accumulator_clearD: (skip) + **/ + +/** + * go_accumulator_clearl: (skip) + **/ + +/** + * go_accumulator_freeD: (skip) + **/ + +/** + * go_accumulator_freel: (skip) + **/ + +/** + * go_accumulator_newD: (skip) + **/ + +/** + * go_accumulator_newl: (skip) + **/ + +/** + * go_accumulator_startD: (skip) + **/ + +/** + * go_accumulator_startl: (skip) + **/ + +/** + * go_accumulator_valueD: (skip) + **/ + +/** + * go_accumulator_valuel: (skip) + **/ + +/** + * go_add_epsilonD: + * @x: a number + * + * Returns the next-larger representable value, except that zero and + * infinites are returned unchanged. + */ + +/** + * go_add_epsilonl: + * @x: a number + * + * Returns the next-larger representable value, except that zero and + * infinites are returned unchanged. + */ + +/** + * go_atan2piD: + * @y: a number + * @x: a number + * + * Returns: the polar angle of the point (@x,@y) in radians divided by Pi. + * The result is a number between -1 and +1. + */ + +/** + * go_atan2pil: + * @y: a number + * @x: a number + * + * Returns: the polar angle of the point (@x,@y) in radians divided by Pi. + * The result is a number between -1 and +1. + */ + +/** + * go_atanpiD: + * @x: a number + * + * Returns: the arc tangent of @x in radians divided by Pi. The result is a + * number between -1 and +1. + */ + +/** + * go_atanpil: + * @x: a number + * + * Returns: the arc tangent of @x in radians divided by Pi. The result is a + * number between -1 and +1. + */ + +/** + * go_cospiD: + * @x: a number + * + * Returns: the cosine of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_cospil: + * @x: a number + * + * Returns: the cosine of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_cotpiD: + * @x: a number + * + * Returns: the cotangent of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_cotpil: + * @x: a number + * + * Returns: the cotangent of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_cspline_destroyD: + * @sp: a spline structure returned by go_cspline_init. + * + * Frees the spline structure when done. + */ + +/** + * go_cspline_destroyl: + * @sp: a spline structure returned by go_cspline_init. + * + * Frees the spline structure when done. + */ + +/** + * go_cspline_get_derivD: + * @sp: a spline structure returned by go_cspline_init. + * @x: the value + * + * sp must be a valid spline structure as returned by go_cspline_init. + * + * Returns: the interpolated derivative at x, or 0 if an error occurred. + */ + +/** + * go_cspline_get_derivl: + * @sp: a spline structure returned by go_cspline_init. + * @x: the value + * + * sp must be a valid spline structure as returned by go_cspline_init. + * + * Returns: the interpolated derivative at x, or 0 if an error occurred. + */ + +/** + * go_cspline_get_derivsD: + * @sp: a spline structure returned by go_cspline_init. + * @x: a vector a values at which interpolation is requested. + * @n: the number of interpolation requested. + * + * sp must be a valid spline structure as returned by go_cspline_init. + * The x values must be sorted in increasing order. + * + * Returns: a newly allocated array of the n interpolated derivatives which + * should be destroyed by a call to g_free when not anymore needed, or %NULL if + * an error occurred. + */ + +/** + * go_cspline_get_derivsl: + * @sp: a spline structure returned by go_cspline_init. + * @x: a vector a values at which interpolation is requested. + * @n: the number of interpolation requested. + * + * sp must be a valid spline structure as returned by go_cspline_init. + * The x values must be sorted in increasing order. + * + * Returns: a newly allocated array of the n interpolated derivatives which + * should be destroyed by a call to g_free when not anymore needed, or %NULL if + * an error occurred. + */ + +/** + * go_cspline_get_integralsD: + * @sp: a spline structure returned by go_cspline_init. + * @x: a vector a values at which interpolation is requested. + * @n: the number of interpolation requested. + * + * sp must be a valid spline structure as returned by go_cspline_init. + * The x values must be sorted in increasing order. + * + * Returns: a newly allocated array of the n-1 integrals on the intervals + * between two consecutive values stored in x. which should be destroyed by + * a call to g_free when not anymore needed, or %NULL if an error occurred. + */ + +/** + * go_cspline_get_integralsl: + * @sp: a spline structure returned by go_cspline_init. + * @x: a vector a values at which interpolation is requested. + * @n: the number of interpolation requested. + * + * sp must be a valid spline structure as returned by go_cspline_init. + * The x values must be sorted in increasing order. + * + * Returns: a newly allocated array of the n-1 integrals on the intervals + * between two consecutive values stored in x. which should be destroyed by + * a call to g_free when not anymore needed, or %NULL if an error occurred. + */ + +/** + * go_cspline_get_valueD: + * @sp: a spline structure returned by go_cspline_init. + * @x: The value + * + * sp must be a valid spline structure as returned by go_cspline_init. + * + * Returns: the interpolated value for x, or 0 if an error occurred. + */ + +/** + * go_cspline_get_valuel: + * @sp: a spline structure returned by go_cspline_init. + * @x: The value + * + * sp must be a valid spline structure as returned by go_cspline_init. + * + * Returns: the interpolated value for x, or 0 if an error occurred. + */ + +/** + * go_cspline_get_valuesD: + * @sp: a spline structure returned by go_cspline_init. + * @x: a vector a values at which interpolation is requested. + * @n: the number of interpolation requested. + * + * sp must be a valid spline structure as returned by go_cspline_init. + * The x values must be sorted in increasing order. + * + * Returns: a newly allocated array of interpolated values which should + * be destroyed by a call to g_free when not anymore needed, or %NULL if + * an error occurred. + */ + +/** + * go_cspline_get_valuesl: + * @sp: a spline structure returned by go_cspline_init. + * @x: a vector a values at which interpolation is requested. + * @n: the number of interpolation requested. + * + * sp must be a valid spline structure as returned by go_cspline_init. + * The x values must be sorted in increasing order. + * + * Returns: a newly allocated array of interpolated values which should + * be destroyed by a call to g_free when not anymore needed, or %NULL if + * an error occurred. + */ + +/** + * go_cspline_initD: (skip) + * @x: the x values + * @y: the y values + * @n: the number of x and y values + * @limits: how the limits must be treated, four values are allowed: + * GO_CSPLINE_NATURAL: first and least second derivatives are 0. + * GO_CSPLINE_PARABOLIC: the curve will be a parabolic arc outside of the limits. + * GO_CSPLINE_CUBIC: the curve will be cubic outside of the limits. + * GO_CSPLINE_CLAMPED: the first and last derivatives are imposed. + * @c0: the first derivative when using clamped splines, not used in the + * other limit types. + * @cn: the first derivative when using clamped splines, not used in the + * other limit types. + * + * Creates a spline structure, and computes the coefficients associated with the + * polynomials. The ith polynomial (between x[i-1] and x[i] is: + * y(x) = y[i-1] + (c[i-1] + (b[i-1] + a[i] * (x - x[i-1])) * (x - x[i-1])) * (x - x[i-1]) + * where a[i-1], b[i-1], c[i-1], x[i-1] and y[i-1] are the corresponding + * members of the new structure. + * + * Returns: a newly created GOCSpline instance which should be + * destroyed by a call to go_cspline_destroy. + */ + +/** + * go_cspline_initl: (skip) + * @x: the x values + * @y: the y values + * @n: the number of x and y values + * @limits: how the limits must be treated, four values are allowed: + * GO_CSPLINE_NATURAL: first and least second derivatives are 0. + * GO_CSPLINE_PARABOLIC: the curve will be a parabolic arc outside of the limits. + * GO_CSPLINE_CUBIC: the curve will be cubic outside of the limits. + * GO_CSPLINE_CLAMPED: the first and last derivatives are imposed. + * @c0: the first derivative when using clamped splines, not used in the + * other limit types. + * @cn: the first derivative when using clamped splines, not used in the + * other limit types. + * + * Creates a spline structure, and computes the coefficients associated with the + * polynomials. The ith polynomial (between x[i-1] and x[i] is: + * y(x) = y[i-1] + (c[i-1] + (b[i-1] + a[i] * (x - x[i-1])) * (x - x[i-1])) * (x - x[i-1]) + * where a[i-1], b[i-1], c[i-1], x[i-1] and y[i-1] are the corresponding + * members of the new structure. + * + * Returns: a newly created GOCSpline instance which should be + * destroyed by a call to go_cspline_destroy. + */ + +/** + * go_exponential_regressionD: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-one multiplier is allowed + * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * Performs one-dimensional linear regressions on the input points. + * Fits to "y = b * m1^x1 * ... * md^xd " or equivalently to + * "log y = log b + x1 * log m1 + ... + xd * log md". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_exponential_regression_as_logD: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-one multiplier is allowed + * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * Performs one-dimensional linear regressions on the input points as + * go_exponential_regression, but returns the logarithm of the coefficients instead + * or the coefficients themselves. + * Fits to "y = b * exp (m1*x1) * ... * exp (md*xd) " or equivalently to + * "ln y = ln b + x1 * m1 + ... + xd * md". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_exponential_regression_as_logl: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-one multiplier is allowed + * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * Performs one-dimensional linear regressions on the input points as + * go_exponential_regression, but returns the logarithm of the coefficients instead + * or the coefficients themselves. + * Fits to "y = b * exp (m1*x1) * ... * exp (md*xd) " or equivalently to + * "ln y = ln b + x1 * m1 + ... + xd * md". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_exponential_regressionl: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-one multiplier is allowed + * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * Performs one-dimensional linear regressions on the input points. + * Fits to "y = b * m1^x1 * ... * md^xd " or equivalently to + * "log y = log b + x1 * log m1 + ... + xd * log md". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_fake_ceilD: + * @x: value to ceil + * + * Returns: the ceiling of @x, ie., the smallest integer that is not smaller + * than @x. However, this variant applies a 1 ulp grace interval for + * values that are just a hair larger than an integer. + */ + +/** + * go_fake_ceill: + * @x: value to ceil + * + * Returns: the ceiling of @x, ie., the smallest integer that is not smaller + * than @x. However, this variant applies a 1 ulp grace interval for + * values that are just a hair larger than an integer. + */ + +/** + * go_fake_floorD: + * @x: value to floor + * + * Returns: the floor of @x, ie., the largest integer that is not larger + * than @x. However, this variant applies a 1 ulp grace interval for + * values that are just a hair less than an integer. + */ + +/** + * go_fake_floorl: + * @x: value to floor + * + * Returns: the floor of @x, ie., the largest integer that is not larger + * than @x. However, this variant applies a 1 ulp grace interval for + * values that are just a hair less than an integer. + */ + +/** + * go_format_specializeD: + * @fmt: the format to specialize + * @val: the value to use + * @type: the type of value; 'F' for numeric, 'B' for boolean, 'S' for string. + * @inhibit_minus: (out): set to %TRUE if the format dictates that a minus + * should be inhibited when rendering negative values. + * + * Returns: (transfer none): @fmt format, presumably a conditional format, + * specialized to @value of @type. + */ + +/** + * go_format_specializel: + * @fmt: the format to specialize + * @val: the value to use + * @type: the type of value; 'F' for numeric, 'B' for boolean, 'S' for string. + * @inhibit_minus: (out): set to %TRUE if the format dictates that a minus + * should be inhibited when rendering negative values. + * + * Returns: (transfer none): @fmt format, presumably a conditional format, + * specialized to @value of @type. + */ + +/** + * go_format_valueD: + * @fmt: a #GOFormat + * @val: value to format + * + * Converts @val into a string using format specified by @fmt. + * + * Returns: (transfer full): formatted value. + **/ + +/** + * go_format_value_gstringD: + * @layout: Optional PangoLayout, probably preseeded with font attribute. + * @str: a GString to store (not append!) the resulting string in. + * @measure: (scope call): Function to measure width of string/layout. + * @metrics: Font metrics corresponding to @measure. + * @fmt: #GOFormat + * @val: floating-point value. Must be finite. + * @type: a format character + * @sval: a string to append to @str after @val + * @go_color: a color to render + * @col_width: intended max width of layout in pango units. -1 means + * no restriction. + * @date_conv: #GODateConventions + * @unicode_minus: Use unicode minuses, not hyphens. + * + * Render a floating-point value into @layout in such a way that the + * layouting width does not needlessly exceed @col_width. Optionally + * use unicode minus instead of hyphen. + * Returns: a #GOFormatNumberError + **/ + +/** + * go_format_value_gstringl: + * @layout: Optional PangoLayout, probably preseeded with font attribute. + * @str: a GString to store (not append!) the resulting string in. + * @measure: (scope call): Function to measure width of string/layout. + * @metrics: Font metrics corresponding to @measure. + * @fmt: #GOFormat + * @val: floating-point value. Must be finite. + * @type: a format character + * @sval: a string to append to @str after @val + * @go_color: a color to render + * @col_width: intended max width of layout in pango units. -1 means + * no restriction. + * @date_conv: #GODateConventions + * @unicode_minus: Use unicode minuses, not hyphens. + * + * Render a floating-point value into @layout in such a way that the + * layouting width does not needlessly exceed @col_width. Optionally + * use unicode minus instead of hyphen. + * Returns: a #GOFormatNumberError + **/ + +/** + * go_format_valuel: + * @fmt: a #GOFormat + * @val: value to format + * + * Converts @val into a string using format specified by @fmt. + * + * Returns: (transfer full): formatted value. + **/ + +/** + * go_linear_regressionD: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors. + * @ys: y-vector. (Dependent data.) + * @n: number of data points. + * @affine: if true, a non-zero constant is allowed. + * @res: (out): place for constant[0] and slope1[1], slope2[2],... There will be dim+1 results. + * @stat_: (out): storage for additional results. + * + * Performs multi-dimensional linear regressions on the input points. + * Fits to "y = b + a1 * x1 + ... ad * xd". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_linear_regressionl: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors. + * @ys: y-vector. (Dependent data.) + * @n: number of data points. + * @affine: if true, a non-zero constant is allowed. + * @res: (out): place for constant[0] and slope1[1], slope2[2],... There will be dim+1 results. + * @stat_: (out): storage for additional results. + * + * Performs multi-dimensional linear regressions on the input points. + * Fits to "y = b + a1 * x1 + ... ad * xd". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_logarithmic_fitD: + * @xs: x-vector (i.e. independent data) + * @ys: y-vector (dependent data) + * @n: number of data points + * @res: output place for sign[0], a[1], b[2], c[3], and sum of squared residuals[4]. + * + * Performs a two-dimensional non-linear fitting on the input points. + * Fits to "y = a + b * ln (sign * (x - c))", with sign in {-1, +1}. + * The graph is a logarithmic curve moved horizontally by c and possibly + * mirrored across the y-axis (if sign = -1). + * + * Fits c (and sign) by iterative trials, but seems to be fast enough even + * for automatic recomputation. + * + * Adapts c until a local minimum of squared residuals is reached. For each + * new c tried out the corresponding a and b are calculated by linear + * regression. If no local minimum is found, an error is returned. If there + * is more than one local minimum, the one found is not necessarily the + * smallest (i.e., there might be cases in which the returned fit is not the + * best possible). If the shape of the point cloud is to different from + * ``logarithmic'', either sign can not be determined (error returned) or no + * local minimum will be found. + * + * (Requires: at least 3 different x values, at least 3 different y values.) + * + * Returns: #GORegressionResult as above. + */ + +/** + * go_logarithmic_fitl: + * @xs: x-vector (i.e. independent data) + * @ys: y-vector (dependent data) + * @n: number of data points + * @res: output place for sign[0], a[1], b[2], c[3], and sum of squared residuals[4]. + * + * Performs a two-dimensional non-linear fitting on the input points. + * Fits to "y = a + b * ln (sign * (x - c))", with sign in {-1, +1}. + * The graph is a logarithmic curve moved horizontally by c and possibly + * mirrored across the y-axis (if sign = -1). + * + * Fits c (and sign) by iterative trials, but seems to be fast enough even + * for automatic recomputation. + * + * Adapts c until a local minimum of squared residuals is reached. For each + * new c tried out the corresponding a and b are calculated by linear + * regression. If no local minimum is found, an error is returned. If there + * is more than one local minimum, the one found is not necessarily the + * smallest (i.e., there might be cases in which the returned fit is not the + * best possible). If the shape of the point cloud is to different from + * ``logarithmic'', either sign can not be determined (error returned) or no + * local minimum will be found. + * + * (Requires: at least 3 different x values, at least 3 different y values.) + * + * Returns: #GORegressionResult as above. + */ + +/** + * go_logarithmic_regressionD: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-zero constant is allowed + * @res: output place for constant[0] and factor1[1], factor2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * This is almost a copy of linear_regression and produces multi-dimensional + * linear regressions on the input points after transforming xss to ln(xss). + * Fits to "y = b + a1 * z1 + ... ad * zd" with "zi = ln (xi)". + * Problems with arrays in the calling function: see comment to + * gnumeric_linest, which is also valid for gnumeric_logreg. + * + * (Errors: less than two points, all points on a vertical line, non-positive x data.) + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_logarithmic_regressionl: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-zero constant is allowed + * @res: output place for constant[0] and factor1[1], factor2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * This is almost a copy of linear_regression and produces multi-dimensional + * linear regressions on the input points after transforming xss to ln(xss). + * Fits to "y = b + a1 * z1 + ... ad * zd" with "zi = ln (xi)". + * Problems with arrays in the calling function: see comment to + * gnumeric_linest, which is also valid for gnumeric_logreg. + * + * (Errors: less than two points, all points on a vertical line, non-positive x data.) + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_non_linear_regressionD: + * @f: (scope call): the model function + * @xvals: independent values. + * @par: model parameters. + * @yvals: dependent values. + * @sigmas: stahdard deviations for the dependent values. + * @x_dim: Number of data points. + * @p_dim: Number of parameters. + * @chi: Chi Squared of the final result. This value is not very + * meaningful without the sigmas. + * @errors: MUST ALREADY BE ALLOCATED. These are the approximated standard + * deviation for each parameter. + * + * SYNOPSIS: + * result = non_linear_regression (f, xvals, par, yvals, sigmas, + * x_dim, p_dim, &chi, errors) + * Non linear regression. + * Returns: the results of the non-linear regression from the given initial + * values. + * The resulting parameters are placed back into @par. + **/ + +/** + * go_non_linear_regressionl: + * @f: (scope call): the model function + * @xvals: independent values. + * @par: model parameters. + * @yvals: dependent values. + * @sigmas: stahdard deviations for the dependent values. + * @x_dim: Number of data points. + * @p_dim: Number of parameters. + * @chi: Chi Squared of the final result. This value is not very + * meaningful without the sigmas. + * @errors: MUST ALREADY BE ALLOCATED. These are the approximated standard + * deviation for each parameter. + * + * SYNOPSIS: + * result = non_linear_regression (f, xvals, par, yvals, sigmas, + * x_dim, p_dim, &chi, errors) + * Non linear regression. + * Returns: the results of the non-linear regression from the given initial + * values. + * The resulting parameters are placed back into @par. + **/ + +/** + * go_pow10D: + * @n: exponent + * + * Computes 10 to the power of @n. This is fast and accurate (under the + * reasonable assumption that the compiler is accurate). + */ + +/** + * go_pow10l: + * @n: exponent + * + * Computes 10 to the power of @n. This is fast and accurate (under the + * reasonable assumption that the compiler is accurate). + */ + +/** + * go_pow2D: + * @n: exponent + * + * Computes 2 to the power of @n. This is fast and accurate. + */ + +/** + * go_pow2l: + * @n: exponent + * + * Computes 2 to the power of @n. This is fast and accurate. + */ + +/** + * go_power_regressionD: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-one multiplier is allowed + * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * Performs one-dimensional linear regressions on the input points. + * Fits to "y = b * x1^m1 * ... * xd^md " or equivalently to + * "log y = log b + m1 * log x1 + ... + md * log xd". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_power_regressionl: + * @xss: x-vectors (i.e. independent data) + * @dim: number of x-vectors + * @ys: y-vector (dependent data) + * @n: number of data points + * @affine: if %TRUE, a non-one multiplier is allowed + * @res: output place for constant[0] and root1[1], root2[2],... There will be dim+1 results. + * @stat_: (out) (optional): storage for additional results. + * + * Performs one-dimensional linear regressions on the input points. + * Fits to "y = b * x1^m1 * ... * xd^md " or equivalently to + * "log y = log b + m1 * log x1 + ... + md * log xd". + * + * Returns: #GORegressionResult as above. + **/ + +/** + * go_quad_absD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the absolute value of @a, storing the result in @res. + **/ + +/** + * go_quad_absl: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the absolute value of @a, storing the result in @res. + **/ + +/** + * go_quad_acosD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the arc cosine of @a, storing the result in @res. + **/ + +/** + * go_quad_acosl: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the arc cosine of @a, storing the result in @res. + **/ + +/** + * go_quad_addD: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function adds @a and @b, storing the result in @res. + **/ + +/** + * go_quad_addl: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function adds @a and @b, storing the result in @res. + **/ + +/** + * go_quad_asinD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the arc sine of @a, storing the result in @res. + **/ + +/** + * go_quad_asinl: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the arc sine of @a, storing the result in @res. + **/ + +/** + * go_quad_atan2D: + * @res: (out): result location + * @y: quad-precision value + * @x: quad-precision value + * + * This function computes polar angle coordinate of the point (@x,@y), storing + * the result in @res. + **/ + +/** + * go_quad_atan2l: + * @res: (out): result location + * @y: quad-precision value + * @x: quad-precision value + * + * This function computes polar angle coordinate of the point (@x,@y), storing + * the result in @res. + **/ + +/** + * go_quad_atan2piD: + * @res: (out): result location + * @y: quad-precision value + * @x: quad-precision value + * + * This function computes polar angle coordinate of the point (@x,@y) divided + * by pi, storing the result in @res. + **/ + +/** + * go_quad_atan2pil: + * @res: (out): result location + * @y: quad-precision value + * @x: quad-precision value + * + * This function computes polar angle coordinate of the point (@x,@y) divided + * by pi, storing the result in @res. + **/ + +/** + * go_quad_constant8D: + * @res: (out): result location + * @data: (array length=n): vector of digits + * @base: base of vector's elements + * @n: length of digit vector. + * @scale: scaling value after interpreting digits + * + * This function interprets a vector of digits in a given base as a + * quad-precision value. It is mostly meant for internal use. + **/ + +/** + * go_quad_constant8l: + * @res: (out): result location + * @data: (array length=n): vector of digits + * @base: base of vector's elements + * @n: length of digit vector. + * @scale: scaling value after interpreting digits + * + * This function interprets a vector of digits in a given base as a + * quad-precision value. It is mostly meant for internal use. + **/ + +/** + * go_quad_cosD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the cosine of @a, storing the result in @res. + **/ + +/** + * go_quad_cosl: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the cosine of @a, storing the result in @res. + **/ + +/** + * go_quad_cospiD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the cosine of @a times pi, storing the result in @res. + * This is more accurate than actually doing the multiplication. + **/ + +/** + * go_quad_cospil: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the cosine of @a times pi, storing the result in @res. + * This is more accurate than actually doing the multiplication. + **/ + +/** + * go_quad_divD: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function divides @a and @b, storing the result in @res. + **/ + +/** + * go_quad_divl: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function divides @a and @b, storing the result in @res. + **/ + +/** + * go_quad_dot_productD: + * @res: (out): result location + * @a: (array length=n): vector of quad-precision values + * @b: (array length=n): vector of quad-precision values + * @n: length of vectors. + **/ + +/** + * go_quad_dot_productl: + * @res: (out): result location + * @a: (array length=n): vector of quad-precision values + * @b: (array length=n): vector of quad-precision values + * @n: length of vectors. + **/ + +/** + * go_quad_endD: + * @state: state pointer from go_quad_start. + * + * This ends a section of quad precision arithmetic. + **/ + +/** + * go_quad_endl: + * @state: state pointer from go_quad_start. + * + * This ends a section of quad precision arithmetic. + **/ + +/** + * go_quad_expD: + * @res: (out): result location + * @expb: (out): (allow-none): power-of-base result scaling location + * @a: quad-precision value + * + * This function computes the exponential function at @a, storing the result + * in @res. If the optional @expb is supplied, it is used to return a + * power of radix by which the result should be scaled. This is useful to + * represent results much, much bigger than double precision can handle. + **/ + +/** + * go_quad_expl: + * @res: (out): result location + * @expb: (out): (allow-none): power-of-base result scaling location + * @a: quad-precision value + * + * This function computes the exponential function at @a, storing the result + * in @res. If the optional @expb is supplied, it is used to return a + * power of radix by which the result should be scaled. This is useful to + * represent results much, much bigger than double precision can handle. + **/ + +/** + * go_quad_expm1D: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the exponential function at @a with 1 subtracted, + * storing the difference in @res. + **/ + +/** + * go_quad_expm1l: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the exponential function at @a with 1 subtracted, + * storing the difference in @res. + **/ + +/** + * go_quad_floorD: + * @res: (out): result location + * @a: quad-precision value + * + * This function takes the floor of @a, storing the result in @res. + **/ + +/** + * go_quad_floorl: + * @res: (out): result location + * @a: quad-precision value + * + * This function takes the floor of @a, storing the result in @res. + **/ + +/** + * go_quad_hypotD: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function computes the square root of @a^2 plus @b^2, storing the + * result in @res. + **/ + +/** + * go_quad_hypotl: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function computes the square root of @a^2 plus @b^2, storing the + * result in @res. + **/ + +/** + * go_quad_initD: + * @res: (out): result location + * @h: a double precision value + * + * This stores the value @h in @res. As an exception, this may be called + * outside go_quad_start and go_quad_end sections. + **/ + +/** + * go_quad_initl: + * @res: (out): result location + * @h: a double precision value + * + * This stores the value @h in @res. As an exception, this may be called + * outside go_quad_start and go_quad_end sections. + **/ + +/** + * go_quad_logD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the natural logarithm at @a, storing the result + * in @res. + **/ + +/** + * go_quad_logl: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the natural logarithm at @a, storing the result + * in @res. + **/ + +/** + * go_quad_matrix_back_solveD: + * @R: An upper triangular matrix. + * @x: (out): Result vector. + * @b: Input vector. + * @allow_degenerate: If %TRUE, then degenerate dimensions are ignored other + * than being given a zero result. A degenerate dimension is one whose + * diagonal entry is zero. + * + * Returns: %TRUE on error. + * + * This function solves the triangular system R*x=b. + **/ + +/** + * go_quad_matrix_back_solvel: + * @R: An upper triangular matrix. + * @x: (out): Result vector. + * @b: Input vector. + * @allow_degenerate: If %TRUE, then degenerate dimensions are ignored other + * than being given a zero result. A degenerate dimension is one whose + * diagonal entry is zero. + * + * Returns: %TRUE on error. + * + * This function solves the triangular system R*x=b. + **/ + +/** + * go_quad_matrix_copyD: + * @A: (out): Destination matrix. + * @B: (transfer none): Source matrix. + * + * Copies B to A. + **/ + +/** + * go_quad_matrix_copyl: + * @A: (out): Destination matrix. + * @B: (transfer none): Source matrix. + * + * Copies B to A. + **/ + +/** + * go_quad_matrix_dupD: (skip) + * @A: Matrix to duplicate + * + * Returns: a new matrix. + **/ + +/** + * go_quad_matrix_dupl: (skip) + * @A: Matrix to duplicate + * + * Returns: a new matrix. + **/ + +/** + * go_quad_matrix_eigen_rangeD: + * @A: Triangular matrix. + * @emin: (out): Smallest absolute eigen value. + * @emax: (out): Largest absolute eigen value. + **/ + +/** + * go_quad_matrix_eigen_rangel: + * @A: Triangular matrix. + * @emin: (out): Smallest absolute eigen value. + * @emax: (out): Largest absolute eigen value. + **/ + +/** + * go_quad_matrix_fwd_solveD: + * @R: An upper triangular matrix. + * @x: (out): Result vector. + * @b: Input vector. + * @allow_degenerate: If %TRUE, then degenerate dimensions are ignored other + * than being given a zero result. A degenerate dimension is one whose + * diagonal entry is zero. + * + * Returns: %TRUE on error. + * + * This function solves the triangular system RT*x=b. + **/ + +/** + * go_quad_matrix_fwd_solvel: + * @R: An upper triangular matrix. + * @x: (out): Result vector. + * @b: Input vector. + * @allow_degenerate: If %TRUE, then degenerate dimensions are ignored other + * than being given a zero result. A degenerate dimension is one whose + * diagonal entry is zero. + * + * Returns: %TRUE on error. + * + * This function solves the triangular system RT*x=b. + **/ + +/** + * go_quad_matrix_inverseD: (skip) + * @A: Source matrix. + * @threshold: condition number threshold. + * + * Returns: The inverse matrix of A. If any eigenvalues divided by the largest + * eigenvalue is less than or equal to the given threshold, %NULL is returned + * indicating a matrix that cannot be inverted. (Note: this doesn't actually + * use the eigenvalues of A, but of A after an orthogonal transformation.) + **/ + +/** + * go_quad_matrix_inversel: (skip) + * @A: Source matrix. + * @threshold: condition number threshold. + * + * Returns: The inverse matrix of A. If any eigenvalues divided by the largest + * eigenvalue is less than or equal to the given threshold, %NULL is returned + * indicating a matrix that cannot be inverted. (Note: this doesn't actually + * use the eigenvalues of A, but of A after an orthogonal transformation.) + **/ + +/** + * go_quad_matrix_multiplyD: + * @C: (out): Destination matrix. + * @A: Source matrix. + * @B: Source matrix. + * + * Multiplies A*B and stores the result in C. + **/ + +/** + * go_quad_matrix_multiplyl: + * @C: (out): Destination matrix. + * @A: Source matrix. + * @B: Source matrix. + * + * Multiplies A*B and stores the result in C. + **/ + +/** + * go_quad_matrix_newD: (skip) + * @m: number of rows + * @n: number of columns + * + * Returns: a new zero matrix. + **/ + +/** + * go_quad_matrix_newl: (skip) + * @m: number of rows + * @n: number of columns + * + * Returns: a new zero matrix. + **/ + +/** + * go_quad_matrix_pseudo_inverseD: (skip) + * @A: An arbitrary matrix. + * @threshold: condition number threshold. + * + * Returns: @A's pseudo-inverse. + **/ + +/** + * go_quad_matrix_pseudo_inversel: (skip) + * @A: An arbitrary matrix. + * @threshold: condition number threshold. + * + * Returns: @A's pseudo-inverse. + **/ + +/** + * go_quad_matrix_transposeD: + * @A: (out): Destination matrix. + * @B: (transfer none): Source matrix. + * + * Transposes B into A. + **/ + +/** + * go_quad_matrix_transposel: + * @A: (out): Destination matrix. + * @B: (transfer none): Source matrix. + * + * Transposes B into A. + **/ + +/** + * go_quad_mul12D: + * @res: (out): result location + * @x: double precision value + * @y: double precision value + * + * This function multiplies @x and @y, storing the result in @res with full + * quad precision. + **/ + +/** + * go_quad_mul12l: + * @res: (out): result location + * @x: double precision value + * @y: double precision value + * + * This function multiplies @x and @y, storing the result in @res with full + * quad precision. + **/ + +/** + * go_quad_mulD: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function multiplies @a and @b, storing the result in @res. + **/ + +/** + * go_quad_mull: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function multiplies @a and @b, storing the result in @res. + **/ + +/** + * go_quad_negateD: + * @res: (out): result location + * @a: quad-precision value + * + * This function negates @a and stores the result in @res. + **/ + +/** + * go_quad_negatel: + * @res: (out): result location + * @a: quad-precision value + * + * This function negates @a and stores the result in @res. + **/ + +/** + * go_quad_powD: + * @res: (out): result location + * @expb: (out): (allow-none): power-of-base result scaling location + * @x: quad-precision value + * @y: quad-precision value + * + * This function computes @x to the power of @y, storing the result in @res. + * If the optional @expb is supplied, it is used to return a power of radix + * by which the result should be scaled. Such scaling can be done with the + * scalbn function, typically after combining multiple such terms. This is + * useful to represent results much, much bigger than double precision can + * handle. + **/ + +/** + * go_quad_powl: + * @res: (out): result location + * @expb: (out): (allow-none): power-of-base result scaling location + * @x: quad-precision value + * @y: quad-precision value + * + * This function computes @x to the power of @y, storing the result in @res. + * If the optional @expb is supplied, it is used to return a power of radix + * by which the result should be scaled. Such scaling can be done with the + * scalbn function, typically after combining multiple such terms. This is + * useful to represent results much, much bigger than double precision can + * handle. + **/ + +/** + * go_quad_qr_mark_degenerateD: (skip) + * @qr: A QR decomposition. + * @i: a dimension + * + * Marks dimension i of the qr decomposition as degenerate. In practice + * this means setting the i-th eigenvalue of R to zero. + **/ + +/** + * go_quad_qr_mark_degeneratel: (skip) + * @qr: A QR decomposition. + * @i: a dimension + * + * Marks dimension i of the qr decomposition as degenerate. In practice + * this means setting the i-th eigenvalue of R to zero. + **/ + +/** + * go_quad_qr_multiply_qtD: + * @qr: A QR decomposition. + * @x: (inout): a vector. + * + * Replaces @x by Q^t * x + **/ + +/** + * go_quad_qr_multiply_qtl: + * @qr: A QR decomposition. + * @x: (inout): a vector. + * + * Replaces @x by Q^t * x + **/ + +/** + * go_quad_qr_newD: (skip) + * @A: Source matrix. + * + * QR decomposition of a matrix using Householder matrices. + * + * A (input) is an m-times-n matrix. A[0...m-1][0..n-1] + * If qAT is TRUE, this parameter is transposed. + * + * V is a pre-allocated output m-times-n matrix. V will contrain + * n vectors of different lengths: n, n-1, ..., 1. These are the + * Householder vectors (or null for the degenerate case). The + * matrix Q of size m-times-m is implied from V. + * + * R is a matrix of size n-times-n. (To get the m-times-n version + * of R, simply add m-n null rows.) + * Returns: (transfer full): a new #GOQuadQR. + **/ + +/** + * go_quad_qr_newl: (skip) + * @A: Source matrix. + * + * QR decomposition of a matrix using Householder matrices. + * + * A (input) is an m-times-n matrix. A[0...m-1][0..n-1] + * If qAT is TRUE, this parameter is transposed. + * + * V is a pre-allocated output m-times-n matrix. V will contrain + * n vectors of different lengths: n, n-1, ..., 1. These are the + * Householder vectors (or null for the degenerate case). The + * matrix Q of size m-times-m is implied from V. + * + * R is a matrix of size n-times-n. (To get the m-times-n version + * of R, simply add m-n null rows.) + * Returns: (transfer full): a new #GOQuadQR. + **/ + +/** + * go_quad_qr_rD: + * @qr: A QR decomposition. + * + * Returns: the small R from the decomposition, i.e., a square matrix + * of size n. To get the large R, if needed, add m-n zero rows. + **/ + +/** + * go_quad_qr_rl: + * @qr: A QR decomposition. + * + * Returns: the small R from the decomposition, i.e., a square matrix + * of size n. To get the large R, if needed, add m-n zero rows. + **/ + +/** + * go_quad_sinD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the sine of @a, storing the result in @res. + **/ + +/** + * go_quad_sinl: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the sine of @a, storing the result in @res. + **/ + +/** + * go_quad_sinpiD: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the sine of @a times pi, storing the result in @res. + * This is more accurate than actually doing the multiplication. + **/ + +/** + * go_quad_sinpil: + * @res: (out): result location + * @a: quad-precision value + * + * This function computes the sine of @a times pi, storing the result in @res. + * This is more accurate than actually doing the multiplication. + **/ + +/** + * go_quad_sqrtD: + * @res: (out): result location + * @a: quad-precision value + * + * This function takes the square root of @a, storing the result in @res. + **/ + +/** + * go_quad_sqrtl: + * @res: (out): result location + * @a: quad-precision value + * + * This function takes the square root of @a, storing the result in @res. + **/ + +/** + * go_quad_startD: + * + * Initializes #GOQuad arithmetic. Any use of #GOQuad must occur between calls + * to go_quad_startD() and go_quad_end(). + * Returns: (transfer full): a pointer to pass to go_quad_end() when done. + **/ + +/** + * go_quad_startl: + * + * Initializes #GOQuad arithmetic. Any use of #GOQuad must occur between calls + * to go_quad_startl() and go_quad_end(). + * Returns: (transfer full): a pointer to pass to go_quad_end() when done. + **/ + +/** + * go_quad_subD: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function subtracts @a and @b, storing the result in @res. + **/ + +/** + * go_quad_subl: + * @res: (out): result location + * @a: quad-precision value + * @b: quad-precision value + * + * This function subtracts @a and @b, storing the result in @res. + **/ + +/** + * go_quad_valueD: + * @a: quad-precision value + * + * Returns: closest double precision value to @a. As an exception, + * this may be called outside go_quad_start and go_quad_end sections. + **/ + +/** + * go_quad_valuel: + * @a: quad-precision value + * + * Returns: closest double precision value to @a. As an exception, + * this may be called outside go_quad_start and go_quad_end sections. + **/ + +/** + * go_range_averageD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The average of + * the input values will be stored in @res. + */ + +/** + * go_range_averagel: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The average of + * the input values will be stored in @res. + */ + +/** + * go_range_constantD: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is constant, 0 otherwise. + */ + +/** + * go_range_constantl: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is constant, 0 otherwise. + */ + +/** + * go_range_decreasingD: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is decreasing, 0 otherwise. + */ + +/** + * go_range_decreasingl: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is decreasing, 0 otherwise. + */ + +/** + * go_range_devsqD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The sum of the input + * values deviation from the mean will be stored in @res. + */ + +/** + * go_range_devsql: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The sum of the input + * values deviation from the mean will be stored in @res. + */ + +/** + * go_range_fractile_interD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * @f: fractile + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated fractile given by @f and stores it in @res. + */ + +/** + * go_range_fractile_inter_sortedD: + * @xs: (array length=n): values, which must be sorted. + * @n: number of values + * @res: (out): result. + * @f: fractile + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated fractile given by @f and stores it in @res. + */ + +/** + * go_range_fractile_inter_sortedl: + * @xs: (array length=n): values, which must be sorted. + * @n: number of values + * @res: (out): result. + * @f: fractile + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated fractile given by @f and stores it in @res. + */ + +/** + * go_range_fractile_interl: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * @f: fractile + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated fractile given by @f and stores it in @res. + */ + +/** + * go_range_increasingD: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is increasing, 0 otherwise. + */ + +/** + * go_range_increasingl: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is increasing, 0 otherwise. + */ + +/** + * go_range_maxD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The maximum of + * the input values will be stored in @res. + */ + +/** + * go_range_maxabsD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The maximum of the absolute + * values of the input values will be stored in @res. + */ + +/** + * go_range_maxabsl: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The maximum of the absolute + * values of the input values will be stored in @res. + */ + +/** + * go_range_maxl: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The maximum of + * the input values will be stored in @res. + */ + +/** + * go_range_median_interD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated median and stores it in @res. + */ + +/** + * go_range_median_inter_sortedD: + * @xs: (array length=n): values, which must be sorted. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated median and stores it in @res. + */ + +/** + * go_range_median_inter_sortedl: + * @xs: (array length=n): values, which must be sorted. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated median and stores it in @res. + */ + +/** + * go_range_median_interl: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. This function computes + * the interpolated median and stores it in @res. + */ + +/** + * go_range_minD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The minimum of + * the input values will be stored in @res. + */ + +/** + * go_range_minl: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The minimum of + * the input values will be stored in @res. + */ + +/** + * go_range_sumD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The arithmetic sum of the input + * values will be stored in @res. + */ + +/** + * go_range_suml: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The arithmetic sum of the input + * values will be stored in @res. + */ + +/** + * go_range_sumsqD: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The arithmetic sum of the squares + * of the input values will be stored in @res. + */ + +/** + * go_range_sumsql: + * @xs: (array length=n): values. + * @n: number of values + * @res: (out): result. + * + * Returns: 0 unless an error occurred. The arithmetic sum of the squares + * of the input values will be stored in @res. + */ + +/** + * go_range_vary_uniformlyD: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is either decreasing or increasing, 0 otherwise. + */ + +/** + * go_range_vary_uniformlyl: + * @xs: (array length=n): values. + * @n: number of values + * + * Returns: 1 if range is either decreasing or increasing, 0 otherwise. + */ + +/** + * go_render_generalD: + * @layout: Optional #PangoLayout, probably preseeded with font attribute. + * @str: a GString to store (not append!) the resulting string in. + * @measure: (scope call): Function to measure width of string/layout. + * @metrics: Font metrics corresponding to @measure. + * @val: floating-point value. Must be finite. + * @col_width: intended max width of layout in the units that @measure uses. + * A width of -1 means no restriction. + * @unicode_minus: Use unicode minuses, not hyphens. + * @numeral_shape: numeral shape identifier. + * @custom_shape_flags: flags for using @numeral_shape. + * + * Render a floating-point value into @layout in such a way that the + * layouting width does not needlessly exceed @col_width. Optionally + * use unicode minus instead of hyphen. + **/ + +/** + * go_render_generall: + * @layout: Optional #PangoLayout, probably preseeded with font attribute. + * @str: a GString to store (not append!) the resulting string in. + * @measure: (scope call): Function to measure width of string/layout. + * @metrics: Font metrics corresponding to @measure. + * @val: floating-point value. Must be finite. + * @col_width: intended max width of layout in the units that @measure uses. + * A width of -1 means no restriction. + * @unicode_minus: Use unicode minuses, not hyphens. + * @numeral_shape: numeral shape identifier. + * @custom_shape_flags: flags for using @numeral_shape. + * + * Render a floating-point value into @layout in such a way that the + * layouting width does not needlessly exceed @col_width. Optionally + * use unicode minus instead of hyphen. + **/ + +/** + * go_sinpiD: + * @x: a number + * + * Returns: the sine of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_sinpil: + * @x: a number + * + * Returns: the sine of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_sub_epsilonD: + * @x: a number + * + * Returns the next-smaller representable value, except that zero and + * infinites are returned unchanged. + */ + +/** + * go_sub_epsilonl: + * @x: a number + * + * Returns the next-smaller representable value, except that zero and + * infinites are returned unchanged. + */ + +/** + * go_tanpiD: + * @x: a number + * + * Returns: the tangent of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +/** + * go_tanpil: + * @x: a number + * + * Returns: the tangent of Pi times @x, but with less error than doing the + * multiplication outright. + */ + +// --- END AUTO-GENERATED DOCUMENTATION MARKER --- diff -Nru goffice-0.10.56/goffice/utils/datetime.c goffice-0.10.57/goffice/utils/datetime.c --- goffice-0.10.56/goffice/utils/datetime.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/utils/datetime.c 2023-12-10 21:25:48.000000000 +0000 @@ -385,7 +385,7 @@ * * @in_order: dates are considered in order * - * returns : Number of days after the earlier and not after the later date + * Returns: Number of days after the earlier and not after the later date * */ @@ -431,7 +431,7 @@ * handling * @next: gboolean whether next or previous date * - * returns : GDate * next or previous coupon date + * Returns: GDate * next or previous coupon date * * this function does not depend on the basis of counting! */ diff -Nru goffice-0.10.56/goffice/utils/go-bezier.c goffice-0.10.57/goffice/utils/go-bezier.c --- goffice-0.10.56/goffice/utils/go-bezier.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-bezier.c 2024-01-19 03:08:35.000000000 +0000 @@ -43,8 +43,8 @@ * incoming data. the n and closed fields are just copies of the corresponding * arguments. * - * Returns: a newly created struct GOBezierSpline instance which should be - * destroyed by a call to go_bezier_spline_destroy. + * Returns: (transfer full): a newly created struct GOBezierSpline instance + * which should be destroyed by a call to go_bezier_spline_destroy. **/ GOBezierSpline * go_bezier_spline_init (double const *x, double const *y, int n, gboolean closed) @@ -306,7 +306,7 @@ /** * go_bezier_spline_destroy: - * @sp: a struct GOBezierSpline instance + * @sp: (transfer full): a struct GOBezierSpline instance * * Destroys the given structures after cleaning all allocated fields. **/ @@ -348,8 +348,7 @@ * * Builds a GOPath using the control points evaluated in go_bezier_spline_init. * - * Returns: a newly created GOPath which should be destroyed by a call to - * go_path_free. + * Returns: (transfer full): GOPath matching spline **/ GOPath * go_bezier_spline_to_path (GOBezierSpline *sp) diff -Nru goffice-0.10.56/goffice/utils/go-editor.c goffice-0.10.57/goffice/utils/go-editor.c --- goffice-0.10.56/goffice/utils/go-editor.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-editor.c 2024-01-19 03:08:35.000000000 +0000 @@ -77,7 +77,7 @@ /** * go_editor_free: - * @editor: a #GOEditor + * @editor: (nullable): a #GOEditor * * Frees a GOEditor object. **/ @@ -168,7 +168,6 @@ * Sets whether each page of the editor should be displayed inside a scrolled * window. **/ - void go_editor_set_use_scrolled_window (GOEditor *editor, gboolean use_scrolled) { @@ -268,7 +267,7 @@ * @editor: #GOEditor * @name: page name * - * Returns: (transfer none): the page with @name as name if any + * Returns: (transfer none) (nullable): the page with @name as name if any **/ GtkWidget * go_editor_get_page (GOEditor *editor, char const *name) diff -Nru goffice-0.10.56/goffice/utils/go-file.c goffice-0.10.57/goffice/utils/go-file.c --- goffice-0.10.56/goffice/utils/go-file.c 2020-07-15 21:27:03.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-file.c 2024-01-19 03:08:35.000000000 +0000 @@ -494,7 +494,7 @@ * Decode the final path component. Returns as UTF-8 encoded suitable * for display. * - * Returns: a string that the caller is responsible for freeing. + * Returns: (transfer full): UTF-8 encoded basename. **/ char * go_basename_from_uri (char const *uri) @@ -508,12 +508,12 @@ /** * go_dirname_from_uri: * @uri: target - * @brief: if TRUE, hide "file://" if present. + * @brief: if %TRUE, hide "file://" if present. * * Decode the all but the final path component. Returns as UTF-8 encoded * suitable for display. * - * Returns: dirname which the caller is responsible for freeing. + * Returns: (transfer full): UTF-8 encoded directory part. **/ char * go_dirname_from_uri (char const *uri, gboolean brief) @@ -1016,7 +1016,7 @@ * * url-encode a string according to RFC 2368. * - * Returns: an encoded string which the caller is responsible for freeing. + * Returns: (transfer full): encoded string. **/ gchar* go_url_encode (gchar const *uri_fragment, int type) @@ -1085,10 +1085,8 @@ * go_get_mime_type: * @uri: the uri. * - * returns: the mime type for the file as a newly allocated string. Needs to - * be freed with g_free(). + * Returns: (transfer full): the mime type for the file. **/ - gchar * go_get_mime_type (gchar const *uri) { @@ -1146,8 +1144,7 @@ * @data: the data. * @data_size: the data size * - * returns: the mime type for the data as a newly allocated string. Needs to - * be freed with g_free(). + * Returns: (transfer full): the mime type for the data. **/ gchar * go_get_mime_type_for_data (gconstpointer data, int data_size) @@ -1185,11 +1182,10 @@ * go_mime_type_get_description: * @mime_type: the mime type to describe. * - * returns: the description for the mime type as a newly allocated string. - * Needs to be freed with g_free(). If the description is not found, the - * mime type itself will be returned. + * Returns: (transfer full): the description for the mime type. If the + * description is not found, a copy of the mime type itself will be + * returned. **/ - gchar * go_mime_type_get_description (gchar const *mime_type) { diff -Nru goffice-0.10.56/goffice/utils/go-font.c goffice-0.10.57/goffice/utils/go-font.c --- goffice-0.10.56/goffice/utils/go-font.c 2018-05-08 21:43:13.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-font.c 2024-01-19 03:08:35.000000000 +0000 @@ -67,8 +67,7 @@ * go_font_new_by_desc: * @desc: (transfer full): #PangoFontDescription * - * NOTE : Absorbs @desc. - * Returns: a ref to a font that matches @desc. + * Returns: (transfer full): a font that matches @desc. **/ GOFont const * go_font_new_by_desc (PangoFontDescription *desc) @@ -188,7 +187,7 @@ * go_fonts_list_families: * @context: #PangoContext * - * Returns: (element-type utf8) (transfer full): a sorted list of strings of + * Returns: (element-type utf8) (transfer full): a sorted list of strings of * font family names. **/ GSList * @@ -214,7 +213,7 @@ * go_fonts_list_sizes: * * Returns: (element-type guint) (transfer container): a sorted list of font - * sizes in Pango units. The list must be freed. + * sizes in Pango units. **/ GSList * go_fonts_list_sizes (void) diff -Nru goffice-0.10.56/goffice/utils/go-format.c goffice-0.10.57/goffice/utils/go-format.c --- goffice-0.10.56/goffice/utils/go-format.c 2023-02-03 01:53:50.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-format.c 2024-01-19 20:43:15.000000000 +0000 @@ -3,7 +3,7 @@ * go-format.c : * * Copyright (C) 2003-2005 Jody Goldberg (jody@gnome.org) - * Copyright (C) 2005-2014 Morten Welinder (terra@gnome.org) + * Copyright (C) 2005-2023 Morten Welinder (terra@gnome.org) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -21,16 +21,6 @@ * USA */ -/* - * NOTE - NOTE - NOTE - * - * This file includes itself in order to provide both "double" and "long - * double" versions of most functions. - * - * Most source lines thus correspond to two functions, gdb is having - * a hard time sorting things out. Feel with it. - */ - #include #include #include @@ -51,11 +41,16 @@ #include #include +// We need multiple versions of this code. We're going to include ourself +// with different settings of various macros. gdb will hate us. +#include +#ifndef SKIP_THIS_PASS + #undef DEBUG_GENERAL /** * GOFormatFamily: - * @GO_FORMAT_UNKNOWN: unknown ,should not occur. + * @GO_FORMAT_UNKNOWN: unknown, should not occur. * @GO_FORMAT_GENERAL: general. * @GO_FORMAT_NUMBER: number. * @GO_FORMAT_CURRENCY: currency. @@ -129,65 +124,16 @@ #define ALLOW_NEGATIVE_TIMES #define MAX_DECIMALS 100 -/* Define ALLOW_DENOM_REMOVAL to remove /1s. This is not XL compatible.*/ +// Define ALLOW_DENOM_REMOVAL to remove /1s. This is not XL compatible. #undef ALLOW_DENOM_REMOVAL -/* Define ALLOW_NO_SIGN_AFTER_E to permit formats such as '00E00' and '00E +00' */ +// Define ALLOW_NO_SIGN_AFTER_E to permit formats such as '00E00' and '00E +00' #define ALLOW_NO_SIGN_AFTER_E #define ALLOW_EE_MARKUP #define ALLOW_SI_APPEND #define ALLOW_PI_SLASH -/* ------------------------------------------------------------------------- */ - -#ifndef DOUBLE - -#define DEFINE_COMMON -#define DOUBLE double -#define SUFFIX(_n) _n -#define PREFIX(_n) DBL_ ## _n -#define FORMAT_e "e" -#define FORMAT_f "f" -#define FORMAT_E "E" -#define FORMAT_G "G" -#define STRTO go_strtod - -#ifdef GOFFICE_WITH_LONG_DOUBLE -/* - * We need two versions. Include ourself in order to get regular - * definition first. - */ -#include "go-format.c" - -/* Now change definitions of macros for the long double version. */ -#undef DEFINE_COMMON -#undef DOUBLE -#undef SUFFIX -#undef PREFIX -#undef FORMAT_e -#undef FORMAT_f -#undef FORMAT_E -#undef FORMAT_G -#undef STRTO - -#ifdef HAVE_SUNMATH_H -#include -#endif -#define DOUBLE long double -#define SUFFIX(_n) _n ## l -#define PREFIX(_n) LDBL_ ## _n -#define FORMAT_e "Le" -#define FORMAT_f "Lf" -#define FORMAT_E "LE" -#define FORMAT_G "LG" -#define STRTO go_strtold -#endif - -#endif - -/* ------------------------------------------------------------------------- */ - #undef DEBUG_PROGRAMS #undef DEBUG_REF_COUNT @@ -501,6 +447,9 @@ #ifdef GOFFICE_WITH_LONG_DOUBLE static int go_format_roundtrip_digitsl; #endif +#ifdef GOFFICE_WITH_DECIMAL64 +static const int go_format_roundtrip_digitsD = 16; +#endif #endif gboolean @@ -863,7 +812,7 @@ * * Return: TRUE, if ok. Then @color will be filled in, and @n will be * a number 0-7 for standard colors. - * Returns FALSE otherwise and @color will be zeroed. + * Returns %FALSE otherwise and @color will be zeroed. **/ static gboolean go_format_parse_color (char const *str, GOColor *color, @@ -3796,7 +3745,7 @@ GDateWeekday weekday = 0; DOUBLE hour = 0, minute = 0, second = 0; gboolean ispm = FALSE; - char fsecond[PREFIX(DIG) + 10]; + char fsecond[DOUBLE_DIG + 10]; const char *date_dec_ptr = NULL; GString *numtxt = NULL; size_t dotpos = 0; @@ -3946,7 +3895,7 @@ gboolean isneg = FALSE; #endif - valsecs = SUFFIX(floor)(SUFFIX(go_add_epsilon)(SUFFIX(fabs)(val)) * (unit * 86400) + 0.5); + valsecs = SUFFIX(round)(SUFFIX(go_add_epsilon)(SUFFIX(fabs)(val)) * (unit * 86400)); if (date_decimals) { DOUBLE vs = (seen_elapsed || !isneg) ? valsecs : 0 - valsecs; DOUBLE f = SUFFIX(fmod) (vs, unit); @@ -4528,7 +4477,7 @@ fraction.d = plaind; fraction.digits = cnt_digits (fraction.d); - fraction.n = SUFFIX(floor) (0.5 + aval * fraction.d); + fraction.n = SUFFIX(round) (aval * fraction.d); } else { int ni, di, max_denom; DOUBLE p10; @@ -4554,7 +4503,7 @@ #ifdef ALLOW_PI_SLASH case OP_NUM_FRACTION_SCALE_PI: /* FIXME: not long-double safe. */ - val /= G_PI; + val /= DOUBLE_PI; break; #endif @@ -4918,23 +4867,6 @@ * layouting width does not needlessly exceed @col_width. Optionally * use unicode minus instead of hyphen. **/ -/** - * go_render_generall: - * @layout: Optional #PangoLayout, probably preseeded with font attribute. - * @str: a GString to store (not append!) the resulting string in. - * @measure: (scope call): Function to measure width of string/layout. - * @metrics: Font metrics corresponding to @mesaure. - * @val: floating-point value. Must be finite. - * @col_width: intended max width of layout in the units that @measure uses. - * A width of -1 means no restriction. - * @unicode_minus: Use unicode minuses, not hyphens. - * @numeral_shape: numeral shape identifier. - * @custom_shape_flags: flags for using @numeral_shape. - * - * Render a floating-point value into @layout in such a way that the - * layouting width does not needlessly exceed @col_width. Optionally - * use unicode minus instead of hyphen. - **/ void SUFFIX(go_render_general) (PangoLayout *layout, GString *str, GOFormatMeasure measure, @@ -4968,7 +4900,7 @@ } else { int w; - w = (col_width - (val <= -0.5 ? sign_width : 0)) / min_digit_width; + w = (col_width - (val <= CONST(-0.5) ? sign_width : 0)) / min_digit_width; if (w <= maxdigits) { /* We're limited by width. */ maxdigits = w; @@ -4999,11 +4931,11 @@ goto zero; aval = SUFFIX(fabs) (val); - if (aval >= SUFFIX(1e15) || aval < SUFFIX(1e-4)) + if (aval >= CONST(1e15) || aval < CONST(1e-4)) goto e_notation; /* Number of digits in round(aval). */ - digs_as_int = (aval >= 9.5 ? 1 + SUFFIX(ilog10) (aval + 0.5) : 1); + digs_as_int = (aval >= (DOUBLE)9.5 ? 1 + SUFFIX(ilog10) (aval + CONST(0.5)) : 1); /* Check if there is room for the whole part, including sign. */ safety = metrics->avg_digit_width / 2; @@ -5104,7 +5036,7 @@ #ifdef DEBUG_GENERAL g_printerr ("Trying E-notation\n"); #endif - rounds_to_0 = (aval < 0.5); + rounds_to_0 = (aval < CONST(0.5)); prec = (col_width - (val >= 0 ? 0 : sign_width) - (aval < 1 ? sign_width : metrics->plus_width) - @@ -5135,7 +5067,7 @@ goto zero; } - prec = MIN (prec, PREFIX(DIG) - 1); + prec = MIN (prec, DOUBLE_DIG - 1); go_dtoa (str, "=^.*" FORMAT_E, prec, val); epos = strchr (str->str, 'E') - str->str; digs = 0; @@ -5195,33 +5127,12 @@ * @layout: Optional PangoLayout, probably preseeded with font attribute. * @str: a GString to store (not append!) the resulting string in. * @measure: (scope call): Function to measure width of string/layout. - * @metrics: Font metrics corresponding to @mesaure. - * @fmt: #GOFormat - * @val: floating-point value. Must be finite. - * @type: a format character - * @sval: a string to append to @str after @val - * @go_color: a color to rende - * @col_width: intended max width of layout in pango units. -1 means - * no restriction. - * @date_conv: #GODateConventions - * @unicode_minus: Use unicode minuses, not hyphens. - * - * Render a floating-point value into @layout in such a way that the - * layouting width does not needlessly exceed @col_width. Optionally - * use unicode minus instead of hyphen. - * Returns: a #GOFormatNumberError - **/ -/** - * go_format_value_gstringl: - * @layout: Optional PangoLayout, probably preseeded with font attribute. - * @str: a GString to store (not append!) the resulting string in. - * @measure: (scope call): Function to measure width of string/layout. - * @metrics: Font metrics corresponding to @mesaure. + * @metrics: Font metrics corresponding to @measure. * @fmt: #GOFormat * @val: floating-point value. Must be finite. * @type: a format character * @sval: a string to append to @str after @val - * @go_color: a color to rende + * @go_color: a color to render * @col_width: intended max width of layout in pango units. -1 means * no restriction. * @date_conv: #GODateConventions @@ -5373,9 +5284,8 @@ * * Converts @val into a string using format specified by @fmt. * - * returns: a newly allocated string containing formated value. + * Returns: (transfer full): formatted value. **/ - char * SUFFIX(go_format_value) (GOFormat const *fmt, DOUBLE val) { @@ -5479,7 +5389,8 @@ * Localizes the given format string, i.e., changes decimal dots to the * locale's notion of that and performs other such transformations. * - * Returns: a localized format string, or %NULL if the format was not valid. + * Returns: (transfer full) (nullable): a localized format string, or + * %NULL if the format was not valid. **/ char * go_format_str_localize (char const *str) @@ -5595,7 +5506,8 @@ * De-localizes the given format string, i.e., changes locale's decimal * separators to dots and performs other such transformations. * - * Returns: a non-local format string, or %NULL if the format was not valid. + * Returns: (transfer full) (nullable): a non-local format string, or + * %NULL if the format was not valid. **/ char * go_format_str_delocalize (char const *str) @@ -5746,12 +5658,13 @@ } /** - * go_format_inc_precision : + * go_format_inc_precision: * @fmt: #GOFormat * * Increases the displayed precision for @fmt by one digit. * - * Returns: NULL if the new format would not change things + * Returns: (transfer full) (nullable): New format, or %NULL if the format + * would not change. **/ GOFormat * go_format_inc_precision (GOFormat const *fmt) @@ -5854,12 +5767,13 @@ } /** - * go_format_dec_precision : + * go_format_dec_precision: * @fmt: #GOFormat * * Decreases the displayed precision for @fmt by one digit. * - * Returns: NULL if the new format would not change things + * Returns: (transfer full) (nullable): New format, or %NULL if the format + * would not change. **/ GOFormat * go_format_dec_precision (GOFormat const *fmt) @@ -6205,11 +6119,10 @@ #ifdef DEFINE_COMMON /** - * go_format_new_from_XL : + * go_format_new_from_XL: * @str: XL descriptor in UTF-8 encoding. * - * Returns: Looks up and potentially creates a GOFormat from the supplied - * string in XL format. + * Returns: (transfer full): A GOFormat matching @str. **/ GOFormat * go_format_new_from_XL (char const *str) @@ -6252,14 +6165,14 @@ #ifdef DEFINE_COMMON /** - * go_format_new_markup : + * go_format_new_markup: * @markup: #PangoAttrList * @add_ref: boolean * - * If @add_ref is FALSE absorb the reference to @markup, otherwise add a + * If @add_ref is %FALSE absorb the reference to @markup, otherwise add a * reference. * - * Returns: A new format. + * Returns: (transfer full): A new format. **/ GOFormat * go_format_new_markup (PangoAttrList *markup, gboolean add_ref) @@ -6285,7 +6198,7 @@ * go_format_as_XL: * @fmt: a #GOFormat * - * Returns: the XL style format strint. + * Returns: (transfer none): the XL style format strint. */ const char * go_format_as_XL (GOFormat const *fmt) @@ -6310,7 +6223,7 @@ #ifdef DEFINE_COMMON /** - * go_format_ref : + * go_format_ref: * @fmt: a #GOFormat * * Adds a reference to a GOFormat. @@ -6338,7 +6251,7 @@ #ifdef DEFINE_COMMON /** - * go_format_unref : + * go_format_unref: * @fmt: (transfer full) (nullable): a #GOFormat * * Removes a reference to @fmt, freeing when it goes to zero. @@ -6417,7 +6330,7 @@ * go_format_is_invalid: * @fmt: Format to query * - * Returns: TRUE if, and if only, the format is invalid + * Returns: %TRUE if, and if only, the format is invalid **/ gboolean go_format_is_invalid (GOFormat const *fmt) @@ -6582,8 +6495,8 @@ * go_format_has_year: * @fmt: Format to query * - * Returns: TRUE if format is a number format with a year specifier - * FALSE otherwise. + * Returns: %TRUE if format is a number format with a year specifier + * %FALSE otherwise. **/ gboolean go_format_has_year (GOFormat const *fmt) @@ -6600,8 +6513,8 @@ * go_format_has_month: * @fmt: Format to query * - * Returns: TRUE if format is a number format with a year specifier - * FALSE otherwise. + * Returns: %TRUE if format is a number format with a year specifier + * %FALSE otherwise. **/ gboolean go_format_has_month (GOFormat const *fmt) @@ -6618,8 +6531,8 @@ * go_format_has_day: * @fmt: Format to query * - * Returns: TRUE if format is a number format with a day-of-month specifier - * FALSE otherwise. + * Returns: %TRUE if format is a number format with a day-of-month specifier + * %FALSE otherwise. **/ gboolean go_format_has_day (GOFormat const *fmt) @@ -6636,8 +6549,8 @@ * go_format_has_hour: * @fmt: Format to query * - * Returns: TRUE if format is a number format with an hour specifier - * FALSE otherwise. + * Returns: %TRUE if format is a number format with an hour specifier + * %FALSE otherwise. **/ gboolean go_format_has_hour (GOFormat const *fmt) @@ -6656,8 +6569,8 @@ * go_format_has_minute: * @fmt: Format to query * - * Returns: TRUE if format is a number format with a minute specifier - * FALSE otherwise. + * Returns: %TRUE if format is a number format with a minute specifier + * %FALSE otherwise. **/ gboolean go_format_has_minute (GOFormat const *fmt) @@ -6753,18 +6666,6 @@ * Returns: (transfer none): @fmt format, presumably a conditional format, * specialized to @value of @type. */ - -/** - * go_format_specializel: - * @fmt: the format to specialize - * @val: the value to use - * @type: the type of value; 'F' for numeric, 'B' for boolean, 'S' for string. - * @inhibit_minus: (out): set to %TRUE if the format dictates that a minus - * should be inhibited when rendering negative values. - * - * Returns: (transfer none): @fmt format, presumably a conditional format, - * specialized to @value of @type. - */ const GOFormat * SUFFIX(go_format_specialize) (GOFormat const *fmt, DOUBLE val, char type, gboolean *inhibit_minus) @@ -6805,22 +6706,22 @@ switch (c->op) { case GO_FMT_COND_EQ: - cond = (is_number && val == c->val); + cond = (is_number && val == (DOUBLE)c->val); break; case GO_FMT_COND_NE: - cond = (is_number && val != c->val); + cond = (is_number && val != (DOUBLE)c->val); break; case GO_FMT_COND_LT: - cond = (is_number && val < c->val); + cond = (is_number && val < (DOUBLE)c->val); break; case GO_FMT_COND_LE: - cond = (is_number && val <= c->val); + cond = (is_number && val <= (DOUBLE)c->val); break; case GO_FMT_COND_GT: - cond = (is_number && val > c->val); + cond = (is_number && val > (DOUBLE)c->val); break; case GO_FMT_COND_GE: - cond = (is_number && val >= c->val); + cond = (is_number && val >= (DOUBLE)c->val); break; case GO_FMT_COND_TEXT: cond = (type == 'S' || type == 'B'); @@ -9291,3 +9192,11 @@ return result; } #endif + +/* ------------------------------------------------------------------------- */ + +// See comments at top +#endif // SKIP_THIS_PASS +#if INCLUDE_PASS < INCLUDE_PASS_LAST +#include __FILE__ +#endif diff -Nru goffice-0.10.56/goffice/utils/go-format.h goffice-0.10.57/goffice/utils/go-format.h --- goffice-0.10.56/goffice/utils/go-format.h 2019-06-10 00:02:32.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-format.h 2024-01-19 20:43:15.000000000 +0000 @@ -30,8 +30,7 @@ #define GO_SUPERSCRIPT_SCALE PANGO_SCALE_SMALL #define GO_SUBSCRIPT_SCALE PANGO_SCALE_SMALL #define GO_SUPERSCRIPT_RISE 5000 -#define GO_SUBSCRIPT_RISE -5000 - +#define GO_SUBSCRIPT_RISE (-5000) /* Keep these sequential. */ typedef enum { @@ -156,6 +155,16 @@ guint numeral_shape, guint custom_shape_flags); #endif +#ifdef GOFFICE_WITH_DECIMAL64 +void go_render_generalD (PangoLayout *layout, GString *str, + GOFormatMeasure measure, + const GOFontMetrics *metrics, + _Decimal64 val, + int col_width, + gboolean unicode_minus, + guint numeral_shape, + guint custom_shape_flags); +#endif /*************************************************************************/ @@ -223,6 +232,11 @@ long double val, char type, gboolean *inhibit_minus); #endif +#ifdef GOFFICE_WITH_DECIMAL64 +const GOFormat *go_format_specializeD (GOFormat const *fmt, + _Decimal64 val, char type, + gboolean *inhibit_minus); +#endif GOFormatFamily go_format_get_family (GOFormat const *fmt); @@ -258,6 +272,19 @@ gboolean unicode_minus); char *go_format_valuel (GOFormat const *fmt, long double val); #endif +#ifdef GOFFICE_WITH_DECIMAL64 +GOFormatNumberError +go_format_value_gstringD (PangoLayout *layout, GString *str, + const GOFormatMeasure measure, + const GOFontMetrics *metrics, + GOFormat const *fmt, + _Decimal64 val, char type, const char *sval, + GOColor *go_color, + int col_width, + GODateConventions const *date_conv, + gboolean unicode_minus); +char *go_format_valueD (GOFormat const *fmt, _Decimal64 val); +#endif gboolean go_format_eq (GOFormat const *a, GOFormat const *b); GOFormat *go_format_inc_precision (GOFormat const *fmt); diff -Nru goffice-0.10.56/goffice/utils/go-gdk-pixbuf.c goffice-0.10.57/goffice/utils/go-gdk-pixbuf.c --- goffice-0.10.56/goffice/utils/go-gdk-pixbuf.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-gdk-pixbuf.c 2024-01-19 03:08:35.000000000 +0000 @@ -141,7 +141,7 @@ * Retrieves a pixbuf from the image cache, loading it from the file * @filename located in goffice_icon_dir if not cached yet. * - * returns: (transfer none): a GdkPixbuf, NULL on error. + * Returns: (transfer none) (nullable): a GdkPixbuf, %NULL on error. **/ GdkPixbuf * go_gdk_pixbuf_get_from_cache (char const *filename) diff -Nru goffice-0.10.56/goffice/utils/go-geometry.c goffice-0.10.57/goffice/utils/go-geometry.c --- goffice-0.10.56/goffice/utils/go-geometry.c 2014-09-21 22:03:01.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-geometry.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-geometry.c : A collection of geometry related functions. + * go-geometry.c: A collection of geometry related functions. * * Copyright (C) 2005 Emmanuel Pacaud * @@ -32,11 +32,10 @@ * go_geometry_cartesian_to_polar: * @x: cartesian coordinate * @y: cartesian coordinate - * @rho: polar coordinate - * @theta: polar coordinate + * @rho: (out): polar coordinate + * @theta: (out): polar coordinate * * Converts cartesion coordinates to polar coordinates. - * **/ void go_geometry_cartesian_to_polar (double x, double y, double *rho, double *theta) @@ -75,12 +74,11 @@ /** * go_geometry_AABR_add: - * @aabr0: a #GOGeometryAABR + * @aabr0: (inout): a #GOGeometryAABR * @aabr1: a #GOGeometryAABR * * Computes the Axis Aligned Bounding Rectangle of aabr0 and aabr1, * and stores result in aabr0. - * **/ void go_geometry_AABR_add (GOGeometryAABR *aabr0, GOGeometryAABR const *aabr1) @@ -101,10 +99,9 @@ /** * go_geometry_OBR_to_AABR: * @obr: a #GOGeometryOBR - * @aabr: a #GOGeometryAABR + * @aabr: (out): a #GOGeometryAABR * * Stores Axis Aligned Bounding Rectangle of @obr in @aabr. - * **/ void go_geometry_OBR_to_AABR (GOGeometryOBR const *obr, GOGeometryAABR *aabr) @@ -125,7 +122,7 @@ * * Overlap test of Oriented Bounding Rectangles by the separating axis method. * - * return value: %TRUE if OOBRs overlap + * Return value: %TRUE if OOBRs overlap **/ gboolean go_geometry_test_OBR_overlap (GOGeometryOBR const *obr0, GOGeometryOBR const *obr1) @@ -269,10 +266,10 @@ } /** - * go_direction_is_horizontal : + * go_direction_is_horizontal: * @d: #GODirection * - * Returns: TRUE for GO_DIRECTION_LEFT and GO_DIRECTION_RIGHT. + * Returns: %TRUE for GO_DIRECTION_LEFT and GO_DIRECTION_RIGHT. **/ gboolean go_direction_is_horizontal (GODirection d) @@ -281,10 +278,10 @@ } /** - * go_direction_is_forward : + * go_direction_is_forward: * @d: #GODirection * - * Returns: TRUE for GO_DIRECTION_DOWN or GO_DIRECTION_RIGHT. + * Returns: %TRUE for GO_DIRECTION_DOWN or GO_DIRECTION_RIGHT. **/ gboolean go_direction_is_forward (GODirection d) diff -Nru goffice-0.10.56/goffice/utils/go-glib-extras.c goffice-0.10.57/goffice/utils/go-glib-extras.c --- goffice-0.10.56/goffice/utils/go-glib-extras.c 2021-12-03 00:31:57.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-glib-extras.c 2024-01-19 03:08:35.000000000 +0000 @@ -814,7 +814,7 @@ /** * go_get_real_name: * - * Returns: (transfer none): a utf8 encoded string with the current user name. + * Returns: (transfer none): a UTF-8 encoded string with the current user name. **/ char const * go_get_real_name (void) @@ -840,7 +840,7 @@ /** * go_destroy_password: - * @passwd: The buffer to clear + * @passwd: (transfer none): The buffer to clear * * Overwrite a string holding a password. This is a separate routine to * ensure that the compiler does not try to outsmart us. @@ -1081,7 +1081,7 @@ * @props: (element-type void): the list of properties and their values to * unset * - * Unsezts the values in the list which needs to be a list of alternating + * Unsets the values in the list which needs to be a list of alternating * #GParamSpec and #GValue. **/ void diff -Nru goffice-0.10.56/goffice/utils/go-image.c goffice-0.10.57/goffice/utils/go-image.c --- goffice-0.10.56/goffice/utils/go-image.c 2020-06-27 00:15:07.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-image.c 2024-01-19 03:08:35.000000000 +0000 @@ -76,9 +76,8 @@ * go_mime_to_image_format: * @mime_type: a mime type string * - * returns: file extension for the given mime type. + * Returns: (transfer full): file extension for the given mime type. **/ - char * go_mime_to_image_format (char const *mime_type) { @@ -109,9 +108,8 @@ * go_image_format_to_mime: * @format: a file extension string * - * returns: corresponding mime type. + * Returns: (transfer full) (nullable): corresponding mime type. **/ - char * go_image_format_to_mime (char const *format) { @@ -256,9 +254,8 @@ * * Retrieves information associated to @format. * - * Returns: a #GOImageFormatInfo struct. + * Returns: (transfer none): a #GOImageFormatInfo struct. **/ - GOImageFormatInfo const * go_image_get_format_info (GOImageFormat format) { @@ -281,7 +278,6 @@ * * returns: corresponding #GOImageFormat. **/ - GOImageFormat go_image_get_format_from_name (char const *name) { @@ -312,7 +308,6 @@ * Returns: (element-type GOImageFormat) (transfer container): a list of #GOImageFormat that can be created * from a pixbuf. **/ - GSList * go_image_get_formats_with_pixbuf_saver (void) { diff -Nru goffice-0.10.56/goffice/utils/go-libxml-extras.c goffice-0.10.57/goffice/utils/go-libxml-extras.c --- goffice-0.10.56/goffice/utils/go-libxml-extras.c 2018-04-19 22:19:41.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-libxml-extras.c 2024-01-19 20:43:15.000000000 +0000 @@ -45,7 +45,7 @@ * Note: this reads the entire file into memory and should therefore * not be used for user-supplied files. * - * Returns: (transfer full): A libxml2 xmlDocPtr or %NULL. + * Returns: (transfer full) (nullable): A libxml2 xmlDocPtr or %NULL. **/ xmlDocPtr go_xml_parse_file (char const *filename) @@ -69,7 +69,7 @@ * Get an xmlChar * value for a node carried as an attibute * result must be xmlFree * - * Returns: (transfer full): the attribute value + * Returns: (transfer full) (nullable): the attribute value */ xmlChar * go_xml_node_get_cstr (xmlNodePtr node, char const *name) @@ -160,7 +160,7 @@ void go_xml_node_set_double (xmlNodePtr node, char const *name, double val, - int precision) + int precision) { char str[101 + DBL_DIG]; @@ -252,7 +252,7 @@ * @tree: #xmlNode * @name: child name * - * Returns: (transfer none): the child with @name as name if any. + * Returns: (transfer none) (nullable): the child with @name as name if any. **/ xmlNode * go_xml_get_child_by_name (xmlNode const *parent, char const *child_name) @@ -275,8 +275,8 @@ * @tree: #xmlNode * @name: child name * - * Returns: (transfer none): the child with @name as name and withou "xml:lang" - * attribute if any. + * Returns: (transfer none) (nullable): the child with @name as name and + * without "xml:lang" attribute if any. **/ xmlNode * go_xml_get_child_by_name_no_lang (xmlNode const *parent, char const *name) @@ -307,8 +307,8 @@ * @tree: #xmlNode * @name: child name * - * Returns: (transfer none): the child with @name as name and with "xml:lang" - * attribute corresponding to the preferred language. + * Returns: (transfer none) (nullable): the child with @name as name and + * with "xml:lang" attribute corresponding to the preferred language. **/ xmlNode * go_xml_get_child_by_name_by_lang (xmlNode const *parent, gchar const *name) @@ -385,6 +385,25 @@ } #endif +#ifdef GOFFICE_WITH_DECIMAL64 +/** + * go_xml_out_add_decimal64: + * @output: destination + * @id: (allow-none): attribute name + * @d: value + * + * Output a representation of @d that will be read back without loss of + * precision. + */ +void +go_xml_out_add_decimal64 (GsfXMLOut *output, char const *id, _Decimal64 d) +{ + GString *str = g_string_new (NULL); + go_dtoa (str, "!" GO_DECIMAL64_MODIFIER "g", d); + gsf_xml_out_add_cstr (output, id, str->str); + g_string_free (str, TRUE); +} +#endif void go_xml_out_add_color (GsfXMLOut *output, char const *id, GOColor c) diff -Nru goffice-0.10.56/goffice/utils/go-libxml-extras.h goffice-0.10.57/goffice/utils/go-libxml-extras.h --- goffice-0.10.56/goffice/utils/go-libxml-extras.h 2018-08-26 17:07:53.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-libxml-extras.h 2024-01-19 20:43:15.000000000 +0000 @@ -50,6 +50,9 @@ #ifdef GOFFICE_WITH_LONG_DOUBLE void go_xml_out_add_long_double (GsfXMLOut *output, char const *id, long double ld); #endif +#ifdef GOFFICE_WITH_DECIMAL64 +void go_xml_out_add_decimal64 (GsfXMLOut *output, char const *id, _Decimal64 d); +#endif void go_xml_out_add_color (GsfXMLOut *out, char const *id, GOColor c); void go_xml_in_doc_dispose_on_exit (GsfXMLInDoc **pdoc); diff -Nru goffice-0.10.56/goffice/utils/go-line.c goffice-0.10.57/goffice/utils/go-line.c --- goffice-0.10.56/goffice/utils/go-line.c 2022-02-21 23:24:50.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-line.c 2024-01-19 03:08:35.000000000 +0000 @@ -210,8 +210,8 @@ * go_line_dash_as_str: * @type: a #GOLineDashType * - * Returns: a pointer to the nickname of the dash type, or "none" if - * type is invalid. The returning string should not be freed. + * Returns: (transfer none): nickname of the dash type, or "none" if + * type is invalid. **/ char const * go_line_dash_as_str (GOLineDashType type) @@ -232,9 +232,8 @@ * go_line_dash_as_label: * @type: a #GOLineDashType * - * Returns: a pointer to the user readable name of the dash type, - * or the name of %GO_LINE_NONE if type is invalid. The returned - * string should not be freed. + * Returns: (transfer none): user readable name of the dash type, + * or the name of %GO_LINE_NONE if type is invalid. **/ char const * go_line_dash_as_label (GOLineDashType type) @@ -274,9 +273,9 @@ * @type: a #GOLineDashType * @scale: dash scale * - * Returns: a struct containing the dash sequence corresponding to @type, - * or %NULL if type is invalid or equal to %GO_LINE_NONE. - * The lengths are scaled according to @scale. + * Returns: (transfer full) (nullable): a struct containing the dash + * sequence corresponding to @type, or %NULL if type is invalid or + * equal to %GO_LINE_NONE. The lengths are scaled according to @scale. **/ GOLineDashSequence * go_line_dash_get_sequence (GOLineDashType type, double scale) @@ -343,8 +342,8 @@ * go_line_interpolation_as_str: * @type: an interpolation type * - * Returns: a pointer to the nickname of @type, or "linear" if type - * is invalid. The returned string should not be freed. + * Returns: (transfer none): nickname of @type, or "linear" if type + * is invalid. **/ char const * go_line_interpolation_as_str (GOLineInterpolation type) @@ -365,9 +364,8 @@ * go_line_interpolation_as_label: * @type: an interpolation type * - * Returns: a pointer to the label of @type, or the name of + * Returns: (transfer none): label of @type, or the name of * %GO_LINE_INTERPOLATION_LINEAR if type is invalid. - * The returned string should not be freed. **/ char const * go_line_interpolation_as_label (GOLineInterpolation type) @@ -388,8 +386,8 @@ * go_line_interpolation_supports_radial: * @type: an interpolation type * - * Returns: TRUE if the line interpolation type can be used with radial - * axes set, FALSE if it can't. + * Returns: %TRUE if the line interpolation type can be used with radial + * axes set, %FALSE if it cannot. **/ gboolean go_line_interpolation_supports_radial (GOLineInterpolation type) @@ -408,8 +406,8 @@ * go_line_interpolation_auto_skip: * @type: an interpolation type * - * Returns: TRUE if the line interpolation type forces skipping invalid - * data, FALSE if it is only optional. + * Returns: %TRUE if the line interpolation type forces skipping invalid + * data, %FALSE if it is only optional. **/ gboolean go_line_interpolation_auto_skip (GOLineInterpolation type) diff -Nru goffice-0.10.56/goffice/utils/go-locale.c goffice-0.10.57/goffice/utils/go-locale.c --- goffice-0.10.56/goffice/utils/go-locale.c 2018-05-10 00:01:52.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-locale.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-locale.c : + * go-locale.c: * * Copyright (C) 1998 Chris Lahey, Miguel de Icaza * Copyright (C) 2003-2005 Jody Goldberg (jody@gnome.org) @@ -185,10 +185,10 @@ } /** - * go_locale_get_currency : - * @precedes: a pointer to a boolean which is set to TRUE if the currency + * go_locale_get_currency: + * @precedes: a pointer to a boolean which is set to %TRUE if the currency * should precede - * @space_sep: a pointer to a boolean which is set to TRUE if the currency + * @space_sep: a pointer to a boolean which is set to %TRUE if the currency * should have a space separating it from the value * * Play with the default logic so that things come out nicely for the default @@ -418,7 +418,7 @@ } /* - * go_locale_month_before_day : + * go_locale_month_before_day: * * A quick utility routine to guess whether the default date format * uses day/month or month/day. Returns a value of the same meaning @@ -485,7 +485,7 @@ } /** - * go_locale_24h : + * go_locale_24h: * * Returns: %TRUE if the locale uses a 24h clock, %FALSE otherwise. */ diff -Nru goffice-0.10.56/goffice/utils/go-path.c goffice-0.10.57/goffice/utils/go-path.c --- goffice-0.10.56/goffice/utils/go-path.c 2018-04-19 22:19:42.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-path.c 2024-01-19 03:08:35.000000000 +0000 @@ -271,7 +271,6 @@ * Decrements references count and frees all memory allocated for @path if * references count reaches 0. **/ - void go_path_free (GOPath *path) { @@ -298,7 +297,6 @@ * Increments references count to @path. * Returns: the path with an incremented references count. **/ - GOPath * go_path_ref (GOPath *path) { @@ -876,12 +874,12 @@ /** * go_path_copy: - * @path: #GOPath + * @path: (nullable): #GOPath * - * Returns: a new #GOPath identical to @path. + * Returns: (transfer full) (nullable): a new #GOPath identical to @path. **/ - -GOPath *go_path_copy (GOPath const *path) +GOPath * +go_path_copy (GOPath const *path) { GOPath *new_path; @@ -905,12 +903,13 @@ * @end: the second action to copy * * Copies actions between start and end will be copied inside a new #GOPath. - * Returns: a new #GOPath. If start or end is - * negative, it is not taken into account. + * If start or end is negative, it is not taken into account. + * * Since: 0.10.5 + * Returns: (transfer full): a new #GOPath. **/ - -GOPath *go_path_copy_restricted (GOPath const *path, gssize start, gssize end) +GOPath * +go_path_copy_restricted (GOPath const *path, gssize start, gssize end) { GOPath *new_path; if (path == NULL) @@ -924,15 +923,17 @@ (GOPathClosePathFunc) go_path_append_close, new_path); return new_path; } + /** - * go_path_append: + * go_path_append: (skip) * @path1: #GOPath * @path2: #GOPath * * Appends @path2 at the end of @path1. * Returns: @path1 */ -GOPath *go_path_append (GOPath *path1, GOPath const *path2) +GOPath * +go_path_append (GOPath *path1, GOPath const *path2) { if (path2 == NULL) return path1; @@ -1454,9 +1455,9 @@ /** * go_path_new_from_svg: - * @src: an SVG path. + * @src: (nullable): an SVG path. * - * Returns: (transfer full): the newly allocated #GOPath. + * Returns: (transfer full) (nullable): the newly allocated #GOPath. **/ GOPath * go_path_new_from_svg (char const *src) @@ -1571,10 +1572,11 @@ /** * go_path_new_from_odf_enhanced_path: - * @src: an ODF enhanced path. + * @src: (nullable): an ODF enhanced path. * @variables: environment * - * Returns: (transfer full): the newly allocated #GOPath or %NULL on error. + * Returns: (transfer full) (nullable): the newly allocated #GOPath + * or %NULL on error. **/ GOPath * go_path_new_from_odf_enhanced_path (char const *src, GHashTable const *variables) diff -Nru goffice-0.10.56/goffice/utils/go-pattern.c goffice-0.10.57/goffice/utils/go-pattern.c --- goffice-0.10.56/goffice/utils/go-pattern.c 2022-04-19 00:24:11.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-pattern.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-pattern.c : + * go-pattern.c: * * Copyright (C) 2003-2004 Jody Goldberg (jody@gnome.org) * @@ -249,7 +249,7 @@ } /** - * go_pattern_is_solid : + * go_pattern_is_solid: * @pat: #GOPattern * @color: #GOColor * @@ -290,12 +290,11 @@ } /** - * go_pattern_set_solid : + * go_pattern_set_solid: * @pat: a #GOPattern * @fore: a #GOColor * * Makes @pat a solid pattern with colour @fore. - * **/ void go_pattern_set_solid (GOPattern *pat, GOColor fore) diff -Nru goffice-0.10.56/goffice/utils/go-rsm.c goffice-0.10.57/goffice/utils/go-rsm.c --- goffice-0.10.56/goffice/utils/go-rsm.c 2018-04-19 22:19:41.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-rsm.c 2024-01-19 03:08:35.000000000 +0000 @@ -85,7 +85,7 @@ * @id: resource name * @len: where to store the resource size in bytes * - * Returns: (transfer none): the resource or %NULL if not found + * Returns: (transfer none) (nullable): the resource or %NULL if not found **/ gconstpointer go_rsm_lookup (const char *id, size_t *len) diff -Nru goffice-0.10.56/goffice/utils/go-string.c goffice-0.10.57/goffice/utils/go-string.c --- goffice-0.10.56/goffice/utils/go-string.c 2020-06-11 21:12:24.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-string.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-string.c : ref counted shared strings with richtext and phonetic support + * go-string.c: ref counted shared strings with richtext and phonetic support * * Copyright (C) 2008 Jody Goldberg (jody@gnome.org) * Copyright (C) 2007-2008 Morten Welinder (terra@gnome.org) @@ -111,13 +111,14 @@ } /** - * go_string_new_len : - * @str: string (optionally %NULL) + * go_string_new_len: + * @str: (nullable): string * @len: guint32 * * GOString duplicates @str if no string already exists. * - * Returns: a reference to a #GOString containing @str, or %NULL if @str is %NULL + * Returns: (transfer full) (nullable): a #GOString containing @str, or + * %NULL if @str is %NULL **/ GOString * go_string_new_len (char const *str, guint32 len) @@ -145,12 +146,12 @@ /** * go_string_new_nocopy_len: - * @str: string (optionally %NULL) + * @str: (transfer full) (nullable): string * @len: guint32 * * GOString takes ownership of @str * - * Returns: a reference to a #GOString containing @str + * Returns: (transfer full) (nullable): a #GOString containing @str **/ GOString * go_string_new_nocopy_len (char *str, guint32 len) @@ -180,12 +181,13 @@ } /** - * go_string_new : - * @str: string (optionally %NULL) + * go_string_new: + * @str (nullable): string * * GOString duplicates @str if no string already exists. * - * Returns: a reference to a #GOString containing @str, or %NULL if @str is %NULL + * Returns: (transfer full) (nullable): a #GOString containing @str, or + * %NULL if @str is %NULL **/ GOString * go_string_new (char const *str) @@ -195,11 +197,12 @@ /** * go_string_new_nocopy: - * @str: string + * @str: (nullable): string * * GOString takes ownership of @str * - * Returns: a reference to a #GOString containing @str + * Returns: (transfer full) (nullable): a #GOString containing @str, or + * %NULL if @str is %NULL **/ GOString * go_string_new_nocopy (char *str) @@ -223,7 +226,7 @@ return NULL; } - /* TODO : when we use a better representation for attributes (eg array + /* TODO: when we use a better representation for attributes (eg array * of GOFont indicies) look into sharing rich strings */ if (byte_len <= 0) @@ -262,12 +265,12 @@ /** * go_string_new_rich: - * @str: string. + * @str (nullable): string. * @byte_len: < 0 will call strlen. - * @markup: optionally %NULL list, GOString steals the ref. - * @phonetic: optionally %NULL list of phonetic extensions, GOString steals the ref. + * @markup: (transfer full) (nullable): optional markup. + * @phonetic: (transfer full) (nullable): optional list of phonetic extensions. * - * Returns: a string. + * Returns: (transfer full): a string. **/ GOString * go_string_new_rich (char const *str, @@ -281,12 +284,12 @@ /** * go_string_new_rich_nocopy: - * @str: string; GOString takes ownership + * @str (transfer full) (nullable): string * @byte_len: < 0 will call strlen. - * @markup: optionally %NULL list, GOString steals the ref. - * @phonetic: optionally %NULL list of phonetic extensions, GOString steals the ref. + * @markup: (transfer full) (nullable): optional markup. + * @phonetic: (transfer full) (nullable): optional list of phonetic extensions. * - * Returns: a string. + * Returns: (transfer full): a string. **/ GOString * go_string_new_rich_nocopy (char *str, @@ -479,7 +482,7 @@ * A convenience for g_return_val to share one error string without adding a * reference to functions that do not add references to the result * - * Returns: A string saying 'ERROR' but does not add a ref to it. + * Returns: (transfer none): A string saying 'ERROR' **/ GOString * go_string_ERROR (void) @@ -654,6 +657,8 @@ /** * go_string_get_markup: * @gstr: string. + * + * Returns: (transfer none) (nullable): markup from @gstr. **/ PangoAttrList * go_string_get_markup (GOString const *gstr) @@ -671,8 +676,7 @@ * go_string_get_phonetic: (skip) * @gstr: #GOString. * - * Warning: Not implemented, always returns NULL. - * Returns: (transfer none): the phonetic data. + * Returns: (transfer none) (nullable): the phonetic data. **/ GOStringPhonetic * go_string_get_phonetic (GOString const *gstr) @@ -692,7 +696,7 @@ * @gstr_a: string. * @gstr_b: string. * - * Returns: TRUE if the two strings are equal when ignoring letter case. + * Returns: %TRUE if the two strings are equal when ignoring letter case. **/ gboolean go_string_equal_ignorecase (gconstpointer gstr_a, gconstpointer gstr_b) @@ -725,7 +729,7 @@ * @gstr: string. * @internal: Trim multiple consequtive internal spaces. * - * Returns: @gstr + * Returns: (transfer none): @gstr **/ GOString * go_string_trim (GOString *gstr, gboolean internal) diff -Nru goffice-0.10.56/goffice/utils/go-styled-object.c goffice-0.10.57/goffice/utils/go-styled-object.c --- goffice-0.10.56/goffice/utils/go-styled-object.c 2018-04-16 23:10:52.000000000 +0000 +++ goffice-0.10.57/goffice/utils/go-styled-object.c 2024-01-19 03:08:35.000000000 +0000 @@ -1,5 +1,5 @@ /* - * go-styled-object.c : + * go-styled-object.c: * * Copyright (C) 2009 Jean Brefort (jean.brefort@normalesup.org) * @@ -31,7 +31,7 @@ /** - * GOStyledObjectClass : + * GOStyledObjectClass: * @base: base class * @set_style: sets the object style. * @get_style: returns the object current style. @@ -122,7 +122,7 @@ * * Simply an accessor function that returns @gso->style, without referencing it. * - * Returns: (transfer none): the styled object's #GOStyle + * Returns: (transfer none) (nullable): the styled object's #GOStyle **/ GOStyle* go_styled_object_get_style (GOStyledObject *gso) @@ -140,7 +140,7 @@ * This function returns a new style that is initialized with the auto values for @gso. * Caller is responsible for the result. * - * Returns: (transfer full): a new #GOStyle + * Returns: (transfer full) (nullable): a new #GOStyle **/ GOStyle* go_styled_object_get_auto_style (GOStyledObject *gso) @@ -156,7 +156,6 @@ * @gso: a #GOStyledObject * * Called when the style changed. Might emit a signal if meaningful. - * **/ void go_styled_object_style_changed (GOStyledObject *gso) @@ -174,7 +173,6 @@ * * Apply appropriate theme @style if meaningful, i.e. properties with * auto flag set to %TRUE should be changed to default theme value. - * **/ void go_styled_object_apply_theme (GOStyledObject *gso, GOStyle *style) @@ -190,10 +188,10 @@ * * A #GODoc is necessary to store images. If no GODoc is associated with the * object, image filling will not be supported. - * Returns: (transfer none): he #GODoc associated with the object if any. + * Returns: (transfer none) (nullable): the #GODoc associated with the + * object if any. **/ - -GODoc* +GODoc * go_styled_object_get_document (GOStyledObject *gso) { GOStyledObjectClass *klass = GO_STYLED_OBJECT_GET_CLASS (gso); @@ -203,7 +201,7 @@ } /** - * go_styled_object_set_cairo_line : + * go_styled_object_set_cairo_line: * @so: #GOStyledObject * @cr: #cairo_t * @@ -223,7 +221,7 @@ } /** - * go_styled_object_fill : + * go_styled_object_fill: * @so: #GOStyledObject * @cr: #cairo_t * @preserve: whether the current path should be preserved @@ -241,4 +239,3 @@ style = go_styled_object_get_style (GO_STYLED_OBJECT (so)); go_style_fill (style, cr, preserve); } - diff -Nru goffice-0.10.56/goffice/utils/goffice-utils.c goffice-0.10.57/goffice/utils/goffice-utils.c --- goffice-0.10.56/goffice/utils/goffice-utils.c 2023-04-29 22:45:06.000000000 +0000 +++ goffice-0.10.57/goffice/utils/goffice-utils.c 2024-01-19 03:08:35.000000000 +0000 @@ -51,8 +51,7 @@ * * RFC4122 version 4 compliant random UUIDs generator. * - * Returns: (transfer full): A string with RFC41122 version 4 random UUID, - * must be freed with _free(). + * Returns: (transfer full): A string with RFC4122 version 4 random UUID **/ char * go_uuid (void) diff -Nru goffice-0.10.56/po/ChangeLog goffice-0.10.57/po/ChangeLog --- goffice-0.10.56/po/ChangeLog 2023-11-02 23:07:40.000000000 +0000 +++ goffice-0.10.57/po/ChangeLog 2024-02-11 17:18:25.000000000 +0000 @@ -1,3 +1,7 @@ +2024-02-11 Morten Welinder + + * Release 0.10.57 + 2023-11-02 Morten Welinder * Release 0.10.56 diff -Nru goffice-0.10.56/po/de.po goffice-0.10.57/po/de.po --- goffice-0.10.56/po/de.po 2023-09-17 01:02:34.000000000 +0000 +++ goffice-0.10.57/po/de.po 2023-12-22 17:10:12.000000000 +0000 @@ -42,16 +42,16 @@ msgstr "" "Project-Id-Version: goffice master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/goffice/issues\n" -"POT-Creation-Date: 2022-08-29 23:25+0000\n" -"PO-Revision-Date: 2023-09-13 11:20+0200\n" -"Last-Translator: Jürgen Benvenuti \n" -"Language-Team: Deutsch \n" +"POT-Creation-Date: 2023-12-10 21:25+0000\n" +"PO-Revision-Date: 2023-12-22 14:22+0100\n" +"Last-Translator: Tim Sabsch \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.3.1\n" +"X-Generator: Poedit 3.4.1\n" "X-Project-Style: gnome\n" #: ../goffice/app/file.c:177 ../goffice/app/file.c:632 @@ -480,7 +480,7 @@ msgstr "Die Aufräumfunktion im Plugin gab einen Fehler zurück." #: ../goffice/app/go-plugin-service.c:229 ../goffice/gtk/go-format-sel.c:59 -#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5521 +#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5486 msgid "General" msgstr "Allgemein" @@ -644,12 +644,41 @@ msgid "Arrow for line's end" msgstr "Pfeil für Linienende" +#: ../goffice/canvas/goc-canvas.c:365 ../goffice/canvas/goc-component.c:309 +#: ../goffice/canvas/goc-component.c:310 ../goffice/canvas/goc-ellipse.c:291 +#: ../goffice/canvas/goc-graph.c:476 ../goffice/canvas/goc-graph.c:477 +#: ../goffice/canvas/goc-image.c:300 ../goffice/canvas/goc-pixbuf.c:247 +#: ../goffice/canvas/goc-rectangle.c:350 ../goffice/canvas/goc-widget.c:840 +#: ../goffice/graph/gog-color-scale.c:340 ../goffice/graph/gog-graph.c:499 +#: ../goffice/graph/gog-object.c:207 ../goffice/utils/go-image.c:510 +#: ../plugins/plot_xy/gog-xy-dropbar.c:308 +msgid "Width" +msgstr "Breite" + +#: ../goffice/canvas/goc-canvas.c:366 +msgid "The width of the canvas" +msgstr "Die Breite der Zeichenfläche" + +#: ../goffice/canvas/goc-canvas.c:371 ../goffice/canvas/goc-component.c:303 +#: ../goffice/canvas/goc-component.c:304 ../goffice/canvas/goc-ellipse.c:297 +#: ../goffice/canvas/goc-graph.c:470 ../goffice/canvas/goc-graph.c:471 +#: ../goffice/canvas/goc-image.c:306 ../goffice/canvas/goc-pixbuf.c:253 +#: ../goffice/canvas/goc-rectangle.c:356 ../goffice/canvas/goc-widget.c:846 +#: ../goffice/graph/gog-graph.c:505 ../goffice/graph/gog-object.c:209 +#: ../goffice/utils/go-image.c:514 +msgid "Height" +msgstr "Höhe" + +#: ../goffice/canvas/goc-canvas.c:372 +msgid "The height of the canvas" +msgstr "Die Höhe der Zeichenfläche" + #: ../goffice/canvas/goc-circle.c:188 ../goffice/canvas/goc-component.c:291 -#: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:454 +#: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:458 #: ../goffice/canvas/goc-group.c:294 ../goffice/canvas/goc-image.c:288 #: ../goffice/canvas/goc-path.c:294 ../goffice/canvas/goc-pixbuf.c:235 #: ../goffice/canvas/goc-rectangle.c:338 ../goffice/canvas/goc-text.c:468 -#: ../goffice/canvas/goc-widget.c:820 ../goffice/utils/go-marker.c:104 +#: ../goffice/canvas/goc-widget.c:827 ../goffice/utils/go-marker.c:104 msgid "x" msgstr "x" @@ -658,11 +687,11 @@ msgstr "Die horizontale Position des Kreismittelpunkts" #: ../goffice/canvas/goc-circle.c:194 ../goffice/canvas/goc-component.c:297 -#: ../goffice/canvas/goc-ellipse.c:285 ../goffice/canvas/goc-graph.c:460 +#: ../goffice/canvas/goc-ellipse.c:285 ../goffice/canvas/goc-graph.c:464 #: ../goffice/canvas/goc-group.c:300 ../goffice/canvas/goc-image.c:294 #: ../goffice/canvas/goc-path.c:300 ../goffice/canvas/goc-pixbuf.c:241 #: ../goffice/canvas/goc-rectangle.c:344 ../goffice/canvas/goc-text.c:474 -#: ../goffice/canvas/goc-widget.c:826 +#: ../goffice/canvas/goc-widget.c:833 msgid "y" msgstr "y" @@ -686,25 +715,6 @@ msgid "The object top position" msgstr "Die obere Position des Elements" -#: ../goffice/canvas/goc-component.c:303 ../goffice/canvas/goc-component.c:304 -#: ../goffice/canvas/goc-ellipse.c:297 ../goffice/canvas/goc-graph.c:466 -#: ../goffice/canvas/goc-graph.c:467 ../goffice/canvas/goc-image.c:306 -#: ../goffice/canvas/goc-pixbuf.c:253 ../goffice/canvas/goc-rectangle.c:356 -#: ../goffice/canvas/goc-widget.c:839 ../goffice/graph/gog-graph.c:505 -#: ../goffice/graph/gog-object.c:209 ../goffice/utils/go-image.c:514 -msgid "Height" -msgstr "Höhe" - -#: ../goffice/canvas/goc-component.c:309 ../goffice/canvas/goc-component.c:310 -#: ../goffice/canvas/goc-ellipse.c:291 ../goffice/canvas/goc-graph.c:472 -#: ../goffice/canvas/goc-graph.c:473 ../goffice/canvas/goc-image.c:300 -#: ../goffice/canvas/goc-pixbuf.c:247 ../goffice/canvas/goc-rectangle.c:350 -#: ../goffice/canvas/goc-widget.c:833 ../goffice/graph/gog-color-scale.c:340 -#: ../goffice/graph/gog-graph.c:499 ../goffice/graph/gog-object.c:207 -#: ../goffice/utils/go-image.c:510 ../plugins/plot_xy/gog-xy-dropbar.c:308 -msgid "Width" -msgstr "Breite" - #: ../goffice/canvas/goc-component.c:316 msgid "The rotation around center" msgstr "Die Drehung um die Mittelposition" @@ -739,36 +749,36 @@ msgstr "Die Drehung um die linke obere Position" #. Note to translators: the following is a format string for a pair of coordinates. If your locale uses decimal comma then you should probably translate the comma here to a semi-colon. -#: ../goffice/canvas/goc-graph.c:386 +#: ../goffice/canvas/goc-graph.c:390 #, c-format msgid "(%s,%s)" msgstr "(%s;%s)" -#: ../goffice/canvas/goc-graph.c:455 +#: ../goffice/canvas/goc-graph.c:459 msgid "The graph left position" msgstr "Die linke Position des Diagramms" -#: ../goffice/canvas/goc-graph.c:461 +#: ../goffice/canvas/goc-graph.c:465 msgid "The graph top position" msgstr "Die obere Position des Diagramms" #. default #. Cheat and assign a name here, graphs will not have parents until we #. * support graphs in graphs -#: ../goffice/canvas/goc-graph.c:478 ../goffice/graph/gog-graph.c:258 +#: ../goffice/canvas/goc-graph.c:482 ../goffice/graph/gog-graph.c:258 #: ../goffice/graph/gog-graph.c:531 ../goffice/graph/gog-theme.c:581 msgid "Graph" msgstr "Ausgabe" -#: ../goffice/canvas/goc-graph.c:479 +#: ../goffice/canvas/goc-graph.c:483 msgid "The GogGraph this object displays" msgstr "Das von diesem Objekt dargestellte GogGraph" -#: ../goffice/canvas/goc-graph.c:484 ../goffice/graph/gog-graph.c:1075 +#: ../goffice/canvas/goc-graph.c:488 ../goffice/graph/gog-graph.c:1075 msgid "Renderer" msgstr "Darsteller" -#: ../goffice/canvas/goc-graph.c:485 +#: ../goffice/canvas/goc-graph.c:489 msgid "The GogRenderer being displayed" msgstr "Der dargestellte GogRenderer" @@ -1096,27 +1106,27 @@ msgid "Wrap width for the text" msgstr "Umbruchbreite für den Text" -#: ../goffice/canvas/goc-widget.c:814 +#: ../goffice/canvas/goc-widget.c:821 msgid "Widget" msgstr "Element" -#: ../goffice/canvas/goc-widget.c:815 +#: ../goffice/canvas/goc-widget.c:822 msgid "A pointer to the embedded widget" msgstr "Ein Verweis auf das eingebettete Element" -#: ../goffice/canvas/goc-widget.c:821 +#: ../goffice/canvas/goc-widget.c:828 msgid "The widget left position" msgstr "Die linke Position des Elements" -#: ../goffice/canvas/goc-widget.c:827 +#: ../goffice/canvas/goc-widget.c:834 msgid "The widget top position" msgstr "Die obere Position des Elements" -#: ../goffice/canvas/goc-widget.c:834 +#: ../goffice/canvas/goc-widget.c:841 msgid "The widget width" msgstr "Die Breite des Elements" -#: ../goffice/canvas/goc-widget.c:840 +#: ../goffice/canvas/goc-widget.c:847 msgid "The widget height" msgstr "Die Höhe des Elements" @@ -1430,7 +1440,7 @@ msgstr "Farbe" #: ../goffice/graph/gog-axis-color-map-prefs.ui.h:5 -#: ../goffice/graph/gog-guru.c:1032 ../goffice/graph/gog-series.c:595 +#: ../goffice/graph/gog-guru.c:1029 ../goffice/graph/gog-series.c:595 #: ../goffice/graph/gog-theme-editor.ui.h:2 msgid "Name" msgstr "Name" @@ -1887,7 +1897,7 @@ #: ../goffice/graph/gog-smoothed-curve.c:60 #: ../goffice/graph/gog-trend-line.c:92 #: ../plugins/plot_distrib/gog-probability-plot.c:75 -#: ../plugins/plot_xy/gog-xy.c:2110 +#: ../plugins/plot_xy/gog-xy.c:2101 msgid "Details" msgstr "Details" @@ -1935,7 +1945,7 @@ #: ../goffice/graph/gog-color-scale-prefs.ui.h:4 #: ../plugins/plot_distrib/gog-boxplot.c:395 #: ../plugins/plot_distrib/gog-boxplot-prefs.ui.h:9 -#: ../plugins/plot_distrib/gog-histogram.c:372 +#: ../plugins/plot_distrib/gog-histogram.c:373 msgid "Vertical" msgstr "Vertikal" @@ -2004,7 +2014,7 @@ #: ../goffice/graph/gog-error-bar-prefs.ui.h:9 #: ../plugins/plot_barcol/gog-1.5d.c:372 #: ../plugins/plot_distrib/gog-boxplot.c:428 -#: ../plugins/plot_distrib/gog-histogram.c:400 +#: ../plugins/plot_distrib/gog-histogram.c:401 #: ../plugins/plot_distrib/gog-probability-plot.c:317 #: ../plugins/plot_pie/gog-pie.c:344 ../plugins/plot_radar/gog-radar.c:324 msgid "Values" @@ -2091,23 +2101,23 @@ msgid "Are these minor grid lines" msgstr "Gibt an, ob es Nebengitterlinien sind" -#: ../goffice/graph/gog-guru.c:1059 +#: ../goffice/graph/gog-guru.c:1056 msgid "Step 1 of 2: Select Chart Type" msgstr "Schritt 1 von 2: Diagrammtyp wählen" -#: ../goffice/graph/gog-guru.c:1067 +#: ../goffice/graph/gog-guru.c:1064 msgid "Step 2 of 2: Customize Chart" msgstr "Schritt 2 von 2: Diagramm anpassen" -#: ../goffice/graph/gog-guru.c:1072 +#: ../goffice/graph/gog-guru.c:1069 msgid "Customize Chart" msgstr "Diagramm anpassen" -#: ../goffice/graph/gog-guru.c:1147 +#: ../goffice/graph/gog-guru.c:1144 msgid "_Insert" msgstr "_Einfügen" -#: ../goffice/graph/gog-guru.c:1218 +#: ../goffice/graph/gog-guru.c:1215 #: ../goffice/graph/gog-guru-type-selector.ui.h:1 msgid "_Plot Type" msgstr "_Graphtyp" @@ -3023,7 +3033,7 @@ #: ../plugins/plot_barcol/gog-line.c:612 #: ../plugins/plot_barcol/gog-minmax.c:195 #: ../plugins/plot_distrib/gog-boxplot.c:172 -#: ../plugins/plot_distrib/gog-histogram.c:343 +#: ../plugins/plot_distrib/gog-histogram.c:344 #: ../plugins/plot_pie/gog-pie.c:279 ../plugins/plot_pie/gog-pie.c:442 #: ../plugins/plot_radar/gog-radar.c:409 ../plugins/plot_radar/gog-radar.c:600 #: ../plugins/plot_surface/gog-xyz.c:103 @@ -7414,7 +7424,7 @@ msgstr "Fehlerbalken" #: ../plugins/plot_barcol/gog-1.5d.c:661 -#: ../plugins/plot_distrib/gog-histogram.c:1119 +#: ../plugins/plot_distrib/gog-histogram.c:1120 msgid "Drop lines" msgstr "Bezugslinien" @@ -7424,8 +7434,8 @@ msgstr "Linien" #: ../plugins/plot_barcol/gog-1.5d.c:698 ../plugins/plot_radar/gog-radar.c:1354 -#: ../plugins/plot_radar/gog-radar.c:1480 ../plugins/plot_xy/gog-xy.c:2187 -#: ../plugins/plot_xy/gog-xy.c:2193 +#: ../plugins/plot_radar/gog-radar.c:1480 ../plugins/plot_xy/gog-xy.c:2178 +#: ../plugins/plot_xy/gog-xy.c:2184 msgid "GogErrorBar *" msgstr "GogErrorBar *" @@ -7478,7 +7488,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:130 #: ../plugins/plot_barcol/gog-line.c:641 #: ../plugins/plot_distrib/gog-boxplot.c:413 -#: ../plugins/plot_distrib/gog-histogram.c:384 +#: ../plugins/plot_distrib/gog-histogram.c:385 #: ../plugins/plot_radar/gog-radar.c:447 ../plugins/plot_radar/gog-radar.c:522 #: ../plugins/plot_xy/gog-xy.c:398 ../plugins/plot_xy/gog-xy-dropbar.c:296 msgid "Displayed under the grids" @@ -7488,7 +7498,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:131 #: ../plugins/plot_barcol/gog-line.c:642 #: ../plugins/plot_distrib/gog-boxplot.c:414 -#: ../plugins/plot_distrib/gog-histogram.c:385 +#: ../plugins/plot_distrib/gog-histogram.c:386 #: ../plugins/plot_radar/gog-radar.c:448 ../plugins/plot_radar/gog-radar.c:523 #: ../plugins/plot_xy/gog-xy.c:399 ../plugins/plot_xy/gog-xy-dropbar.c:297 msgid "Should the plot be displayed before the grids" @@ -7511,11 +7521,11 @@ msgid "PlotDropBar" msgstr "PlotDropBar" -#: ../plugins/plot_barcol/gog-line.c:342 ../plugins/plot_xy/gog-xy.c:2204 +#: ../plugins/plot_barcol/gog-line.c:342 ../plugins/plot_xy/gog-xy.c:2195 msgid "Clamp at start" msgstr "Am Anfang abschneiden" -#: ../plugins/plot_barcol/gog-line.c:343 ../plugins/plot_xy/gog-xy.c:2205 +#: ../plugins/plot_barcol/gog-line.c:343 ../plugins/plot_xy/gog-xy.c:2196 msgid "" "Slope at start of the interpolated curve when using clamped spline " "interpolation" @@ -7523,11 +7533,11 @@ "Steigung am Anfang der interpolierten Kurve bei Verwendung von Interpolation " "mit abgeschnittenen Splines" -#: ../plugins/plot_barcol/gog-line.c:348 ../plugins/plot_xy/gog-xy.c:2210 +#: ../plugins/plot_barcol/gog-line.c:348 ../plugins/plot_xy/gog-xy.c:2201 msgid "Clamp at end" msgstr "Am Ende abschneiden" -#: ../plugins/plot_barcol/gog-line.c:349 ../plugins/plot_xy/gog-xy.c:2211 +#: ../plugins/plot_barcol/gog-line.c:349 ../plugins/plot_xy/gog-xy.c:2202 msgid "" "Slope at end of the interpolated curve when using clamped spline " "interpolation" @@ -7946,24 +7956,24 @@ msgid "Histogram" msgstr "Histogramm" -#: ../plugins/plot_distrib/gog-histogram.c:373 +#: ../plugins/plot_distrib/gog-histogram.c:374 msgid "Draw the histogram vertically or horizontally" msgstr "Das Histogramm horizontal oder vertikal darstellen" -#: ../plugins/plot_distrib/gog-histogram.c:378 +#: ../plugins/plot_distrib/gog-histogram.c:379 msgid "Cumulative" msgstr "Kumulativ" -#: ../plugins/plot_distrib/gog-histogram.c:379 +#: ../plugins/plot_distrib/gog-histogram.c:380 msgid "Use cumulated data" msgstr "Kumulierte Daten verwenden" -#: ../plugins/plot_distrib/gog-histogram.c:398 -#: ../plugins/plot_distrib/gog-histogram.c:488 +#: ../plugins/plot_distrib/gog-histogram.c:399 +#: ../plugins/plot_distrib/gog-histogram.c:489 msgid "Limits" msgstr "Limits" -#: ../plugins/plot_distrib/gog-histogram.c:447 +#: ../plugins/plot_distrib/gog-histogram.c:448 msgid "" "Label for the first Y category. If not set or empty, \"First values\" will " "be used." @@ -7971,7 +7981,7 @@ "Beschriftung der ersten Y-Kategorie. Falls leer oder nicht gesetzt, wird " "»Erste Werte« verwendet." -#: ../plugins/plot_distrib/gog-histogram.c:452 +#: ../plugins/plot_distrib/gog-histogram.c:453 msgid "" "Label for the second Y category. If not set or empty, \"Second values\" will " "be used." @@ -7979,19 +7989,19 @@ "Beschriftung der zweiten Y-Kategorie. Falls leer oder nicht gesetzt, wird " "»Zweite Werte« verwendet." -#: ../plugins/plot_distrib/gog-histogram.c:458 +#: ../plugins/plot_distrib/gog-histogram.c:459 msgid "Categories labels" msgstr "Kategoriebeschriftungen" -#: ../plugins/plot_distrib/gog-histogram.c:490 -#: ../plugins/plot_distrib/gog-histogram.c:766 +#: ../plugins/plot_distrib/gog-histogram.c:491 +#: ../plugins/plot_distrib/gog-histogram.c:767 msgid "First values" msgstr "Erste Werte" -#: ../plugins/plot_distrib/gog-histogram.c:492 -#: ../plugins/plot_distrib/gog-histogram.c:774 -#: ../plugins/plot_distrib/gog-histogram.c:785 -#: ../plugins/plot_distrib/gog-histogram.c:797 +#: ../plugins/plot_distrib/gog-histogram.c:493 +#: ../plugins/plot_distrib/gog-histogram.c:775 +#: ../plugins/plot_distrib/gog-histogram.c:786 +#: ../plugins/plot_distrib/gog-histogram.c:798 msgid "Second values" msgstr "Zweite Werte" @@ -8903,27 +8913,27 @@ msgid "XYColor" msgstr "XYColor" -#: ../plugins/plot_xy/gog-xy.c:2115 ../plugins/plot_xy/gog-xy.c:2186 +#: ../plugins/plot_xy/gog-xy.c:2106 ../plugins/plot_xy/gog-xy.c:2177 msgid "X error bars" msgstr "X-Fehlerbalken" -#: ../plugins/plot_xy/gog-xy.c:2118 ../plugins/plot_xy/gog-xy.c:2192 +#: ../plugins/plot_xy/gog-xy.c:2109 ../plugins/plot_xy/gog-xy.c:2183 msgid "Y error bars" msgstr "Y-Fehlerbalken" -#: ../plugins/plot_xy/gog-xy.c:2127 +#: ../plugins/plot_xy/gog-xy.c:2118 msgid "Horizontal drop lines" msgstr "Horizontale Bezugslinien" -#: ../plugins/plot_xy/gog-xy.c:2135 +#: ../plugins/plot_xy/gog-xy.c:2126 msgid "Vertical drop lines" msgstr "Vertikale Bezugslinien" -#: ../plugins/plot_xy/gog-xy.c:2198 +#: ../plugins/plot_xy/gog-xy.c:2189 msgid "Invalid as zero" msgstr "Als Null ungültig" -#: ../plugins/plot_xy/gog-xy.c:2199 +#: ../plugins/plot_xy/gog-xy.c:2190 msgid "Replace invalid values by 0 when drawing markers or bubbles" msgstr "" "Beim Zeichnen von Markierungen oder Blasen ungültige Werte durch 0 ersetzen" diff -Nru goffice-0.10.56/po/es.po goffice-0.10.57/po/es.po --- goffice-0.10.56/po/es.po 2021-05-24 23:30:25.000000000 +0000 +++ goffice-0.10.57/po/es.po 2024-02-03 22:00:27.000000000 +0000 @@ -16,22 +16,22 @@ # miguel rodriguez nuñez , 2013. # Miguel Rodriguez Nuñez , 2014. # Miguel Rodríguez Núñez , 2012, 2013, 2014, 2015. -# Daniel Mustieles , 2011-2021. +# Daniel Mustieles , 2011-2024. # msgid "" msgstr "" "Project-Id-Version: goffice.master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/goffice/issues\n" -"POT-Creation-Date: 2021-03-22 23:17+0000\n" -"PO-Revision-Date: 2021-05-05 11:01+0200\n" +"POT-Creation-Date: 2023-10-29 10:42+0000\n" +"PO-Revision-Date: 2024-01-30 10:32+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Spanish - Spain \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Gtranslator 40.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Gtranslator 45.3\n" "X-Project-Style: gnome\n" #: ../goffice/app/file.c:177 ../goffice/app/file.c:632 @@ -182,12 +182,10 @@ msgstr "Estado actual del documento" #: ../goffice/app/go-doc.c:229 -#| msgid "Save as" msgid "Saved state" msgstr "Estado guardado" #: ../goffice/app/go-doc.c:230 -#| msgid "How much of a document is saved" msgid "State of document when last saved" msgstr "Estado del documento cuando se guardó por última vez" @@ -463,7 +461,7 @@ msgstr "La función de limpieza interna del complemento ha devuelto un error." #: ../goffice/app/go-plugin-service.c:229 ../goffice/gtk/go-format-sel.c:59 -#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5515 +#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5525 msgid "General" msgstr "General" @@ -627,12 +625,41 @@ msgid "Arrow for line's end" msgstr "Flecha para el final de la línea" +#: ../goffice/canvas/goc-canvas.c:365 ../goffice/canvas/goc-component.c:309 +#: ../goffice/canvas/goc-component.c:310 ../goffice/canvas/goc-ellipse.c:291 +#: ../goffice/canvas/goc-graph.c:472 ../goffice/canvas/goc-graph.c:473 +#: ../goffice/canvas/goc-image.c:300 ../goffice/canvas/goc-pixbuf.c:247 +#: ../goffice/canvas/goc-rectangle.c:350 ../goffice/canvas/goc-widget.c:839 +#: ../goffice/graph/gog-color-scale.c:340 ../goffice/graph/gog-graph.c:499 +#: ../goffice/graph/gog-object.c:207 ../goffice/utils/go-image.c:510 +#: ../plugins/plot_xy/gog-xy-dropbar.c:308 +msgid "Width" +msgstr "Anchura" + +#: ../goffice/canvas/goc-canvas.c:366 +msgid "The width of the canvas" +msgstr "La anchura del lienzo" + +#: ../goffice/canvas/goc-canvas.c:371 ../goffice/canvas/goc-component.c:303 +#: ../goffice/canvas/goc-component.c:304 ../goffice/canvas/goc-ellipse.c:297 +#: ../goffice/canvas/goc-graph.c:466 ../goffice/canvas/goc-graph.c:467 +#: ../goffice/canvas/goc-image.c:306 ../goffice/canvas/goc-pixbuf.c:253 +#: ../goffice/canvas/goc-rectangle.c:356 ../goffice/canvas/goc-widget.c:845 +#: ../goffice/graph/gog-graph.c:505 ../goffice/graph/gog-object.c:209 +#: ../goffice/utils/go-image.c:514 +msgid "Height" +msgstr "Altura" + +#: ../goffice/canvas/goc-canvas.c:372 +msgid "The height of the canvas" +msgstr "La altura del lienzo" + #: ../goffice/canvas/goc-circle.c:188 ../goffice/canvas/goc-component.c:291 -#: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:441 +#: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:454 #: ../goffice/canvas/goc-group.c:294 ../goffice/canvas/goc-image.c:288 #: ../goffice/canvas/goc-path.c:294 ../goffice/canvas/goc-pixbuf.c:235 #: ../goffice/canvas/goc-rectangle.c:338 ../goffice/canvas/goc-text.c:468 -#: ../goffice/canvas/goc-widget.c:820 ../goffice/utils/go-marker.c:104 +#: ../goffice/canvas/goc-widget.c:826 ../goffice/utils/go-marker.c:104 msgid "x" msgstr "x" @@ -641,11 +668,11 @@ msgstr "La posición horizontal del centro del círculo" #: ../goffice/canvas/goc-circle.c:194 ../goffice/canvas/goc-component.c:297 -#: ../goffice/canvas/goc-ellipse.c:285 ../goffice/canvas/goc-graph.c:447 +#: ../goffice/canvas/goc-ellipse.c:285 ../goffice/canvas/goc-graph.c:460 #: ../goffice/canvas/goc-group.c:300 ../goffice/canvas/goc-image.c:294 #: ../goffice/canvas/goc-path.c:300 ../goffice/canvas/goc-pixbuf.c:241 #: ../goffice/canvas/goc-rectangle.c:344 ../goffice/canvas/goc-text.c:474 -#: ../goffice/canvas/goc-widget.c:826 +#: ../goffice/canvas/goc-widget.c:832 msgid "y" msgstr "y" @@ -669,25 +696,6 @@ msgid "The object top position" msgstr "La posición superior del objeto" -#: ../goffice/canvas/goc-component.c:303 ../goffice/canvas/goc-component.c:304 -#: ../goffice/canvas/goc-ellipse.c:297 ../goffice/canvas/goc-graph.c:453 -#: ../goffice/canvas/goc-graph.c:454 ../goffice/canvas/goc-image.c:306 -#: ../goffice/canvas/goc-pixbuf.c:253 ../goffice/canvas/goc-rectangle.c:356 -#: ../goffice/canvas/goc-widget.c:839 ../goffice/graph/gog-graph.c:505 -#: ../goffice/graph/gog-object.c:206 ../goffice/utils/go-image.c:514 -msgid "Height" -msgstr "Altura" - -#: ../goffice/canvas/goc-component.c:309 ../goffice/canvas/goc-component.c:310 -#: ../goffice/canvas/goc-ellipse.c:291 ../goffice/canvas/goc-graph.c:459 -#: ../goffice/canvas/goc-graph.c:460 ../goffice/canvas/goc-image.c:300 -#: ../goffice/canvas/goc-pixbuf.c:247 ../goffice/canvas/goc-rectangle.c:350 -#: ../goffice/canvas/goc-widget.c:833 ../goffice/graph/gog-color-scale.c:340 -#: ../goffice/graph/gog-graph.c:499 ../goffice/graph/gog-object.c:204 -#: ../goffice/utils/go-image.c:510 ../plugins/plot_xy/gog-xy-dropbar.c:308 -msgid "Width" -msgstr "Anchura" - #: ../goffice/canvas/goc-component.c:316 msgid "The rotation around center" msgstr "La rotación alrededor del centro" @@ -721,36 +729,36 @@ msgstr "La rotación alrededor de la posición superior izquierda" #. Note to translators: the following is a format string for a pair of coordinates. If your locale uses decimal comma then you should probably translate the comma here to a semi-colon. -#: ../goffice/canvas/goc-graph.c:373 +#: ../goffice/canvas/goc-graph.c:386 #, c-format msgid "(%s,%s)" msgstr "(%s;%s)" -#: ../goffice/canvas/goc-graph.c:442 +#: ../goffice/canvas/goc-graph.c:455 msgid "The graph left position" msgstr "La posición izquierda del gráfico" -#: ../goffice/canvas/goc-graph.c:448 +#: ../goffice/canvas/goc-graph.c:461 msgid "The graph top position" msgstr "La posición superior del gráfico" #. default #. Cheat and assign a name here, graphs will not have parents until we #. * support graphs in graphs -#: ../goffice/canvas/goc-graph.c:465 ../goffice/graph/gog-graph.c:258 +#: ../goffice/canvas/goc-graph.c:478 ../goffice/graph/gog-graph.c:258 #: ../goffice/graph/gog-graph.c:531 ../goffice/graph/gog-theme.c:581 msgid "Graph" msgstr "Gráfico" -#: ../goffice/canvas/goc-graph.c:466 +#: ../goffice/canvas/goc-graph.c:479 msgid "The GogGraph this object displays" msgstr "El GogGraph que muestra este objeto" -#: ../goffice/canvas/goc-graph.c:471 ../goffice/graph/gog-graph.c:1075 +#: ../goffice/canvas/goc-graph.c:484 ../goffice/graph/gog-graph.c:1075 msgid "Renderer" msgstr "Renderizador" -#: ../goffice/canvas/goc-graph.c:472 +#: ../goffice/canvas/goc-graph.c:485 msgid "The GogRenderer being displayed" msgstr "El GogRenderer que se está mostrando" @@ -822,19 +830,19 @@ "El área recortada en la parte superior de la imagen como una fracción de la " "altura de la imagen" -#: ../goffice/canvas/goc-item.c:275 +#: ../goffice/canvas/goc-item.c:276 msgid "Canvas" msgstr "Lienzo" -#: ../goffice/canvas/goc-item.c:276 +#: ../goffice/canvas/goc-item.c:277 msgid "The canvas object on which the item resides" msgstr "El objeto del lienzo en el que reside el elemento" -#: ../goffice/canvas/goc-item.c:281 ../goffice/graph/gog-view.c:693 +#: ../goffice/canvas/goc-item.c:282 ../goffice/graph/gog-view.c:692 msgid "Parent" msgstr "Padre" -#: ../goffice/canvas/goc-item.c:282 +#: ../goffice/canvas/goc-item.c:283 msgid "The group in which the item resides" msgstr "El grupo en el que reside el elemento" @@ -1027,7 +1035,7 @@ msgid "The rotation around the anchor" msgstr "La rotación acerca del anclaje" -#: ../goffice/canvas/goc-text.c:486 ../goffice/graph/gog-object.c:858 +#: ../goffice/canvas/goc-text.c:486 ../goffice/graph/gog-object.c:861 msgid "Anchor" msgstr "Anclaje" @@ -1084,27 +1092,27 @@ msgid "Wrap width for the text" msgstr "Ajustar anchura para el texto" -#: ../goffice/canvas/goc-widget.c:814 +#: ../goffice/canvas/goc-widget.c:820 msgid "Widget" msgstr "Widget" -#: ../goffice/canvas/goc-widget.c:815 +#: ../goffice/canvas/goc-widget.c:821 msgid "A pointer to the embedded widget" msgstr "Un puntero al widget empotrado" -#: ../goffice/canvas/goc-widget.c:821 +#: ../goffice/canvas/goc-widget.c:827 msgid "The widget left position" msgstr "La posición izquierda del widget" -#: ../goffice/canvas/goc-widget.c:827 +#: ../goffice/canvas/goc-widget.c:833 msgid "The widget top position" msgstr "La posición superior del widget" -#: ../goffice/canvas/goc-widget.c:834 +#: ../goffice/canvas/goc-widget.c:840 msgid "The widget width" msgstr "La anchura del widget" -#: ../goffice/canvas/goc-widget.c:840 +#: ../goffice/canvas/goc-widget.c:846 msgid "The widget height" msgstr "La altura del widget" @@ -1376,8 +1384,8 @@ #: ../goffice/graph/gog-axis.c:3484 msgid "" -"The unit symbol for the absolute distance unit between ticks. Might be \"cm" -"\" or \"in\"" +"The unit symbol for the absolute distance unit between ticks. Might be " +"\"cm\" or \"in\"" msgstr "" "El símbolo de unidad para la distancia absoluta entre tics. Será en " "centímetros «cm», o pulgadas «in»" @@ -1422,7 +1430,7 @@ msgstr "Color" #: ../goffice/graph/gog-axis-color-map-prefs.ui.h:5 -#: ../goffice/graph/gog-guru.c:1032 ../goffice/graph/gog-series.c:593 +#: ../goffice/graph/gog-guru.c:1032 ../goffice/graph/gog-series.c:595 #: ../goffice/graph/gog-theme-editor.ui.h:2 msgid "Name" msgstr "Nombre" @@ -1615,8 +1623,8 @@ msgid "_Show Labels" msgstr "Mo_strar etiquetas" -#: ../goffice/graph/gog-axis-prefs.ui.h:13 ../goffice/graph/gog-object.c:790 -#: ../goffice/graph/gog-object.c:834 ../goffice/graph/gog-series-labels.c:899 +#: ../goffice/graph/gog-axis-prefs.ui.h:13 ../goffice/graph/gog-object.c:793 +#: ../goffice/graph/gog-object.c:837 ../goffice/graph/gog-series-labels.c:899 #: ../goffice/graph/gog-series-labels.c:1430 msgid "Position" msgstr "Posición" @@ -1847,27 +1855,27 @@ msgid "%s to %s" msgstr "%s a %s" -#: ../goffice/graph/gog-color-scale.c:144 ../goffice/graph/gog-object.c:173 -#: ../goffice/graph/gog-object.c:192 ../goffice/graph/gog-series.c:110 +#: ../goffice/graph/gog-color-scale.c:144 ../goffice/graph/gog-object.c:176 +#: ../goffice/graph/gog-object.c:195 ../goffice/graph/gog-series.c:112 #: ../goffice/graph/gog-series-labels.c:58 msgid "Top" msgstr "Superior" -#: ../goffice/graph/gog-color-scale.c:145 ../goffice/graph/gog-object.c:177 -#: ../goffice/graph/gog-object.c:198 ../goffice/graph/gog-series.c:108 +#: ../goffice/graph/gog-color-scale.c:145 ../goffice/graph/gog-object.c:180 +#: ../goffice/graph/gog-object.c:201 ../goffice/graph/gog-series.c:110 #: ../goffice/graph/gog-series-labels.c:59 msgid "Bottom" msgstr "Abajo" -#: ../goffice/graph/gog-color-scale.c:147 ../goffice/graph/gog-object.c:179 -#: ../goffice/graph/gog-object.c:194 ../goffice/graph/gog-series.c:109 +#: ../goffice/graph/gog-color-scale.c:147 ../goffice/graph/gog-object.c:182 +#: ../goffice/graph/gog-object.c:197 ../goffice/graph/gog-series.c:111 #: ../goffice/graph/gog-series-labels.c:60 #: ../goffice/gtk/go-gradient-selector.c:101 msgid "Left" msgstr "Izquierda" -#: ../goffice/graph/gog-color-scale.c:148 ../goffice/graph/gog-object.c:175 -#: ../goffice/graph/gog-object.c:196 ../goffice/graph/gog-series.c:111 +#: ../goffice/graph/gog-color-scale.c:148 ../goffice/graph/gog-object.c:178 +#: ../goffice/graph/gog-object.c:199 ../goffice/graph/gog-series.c:113 #: ../goffice/graph/gog-series-labels.c:61 #: ../goffice/gtk/go-gradient-selector.c:103 msgid "Right" @@ -1879,7 +1887,7 @@ #: ../goffice/graph/gog-smoothed-curve.c:60 #: ../goffice/graph/gog-trend-line.c:92 #: ../plugins/plot_distrib/gog-probability-plot.c:75 -#: ../plugins/plot_xy/gog-xy.c:2105 +#: ../plugins/plot_xy/gog-xy.c:2110 msgid "Details" msgstr "Detalles" @@ -1927,7 +1935,7 @@ #: ../goffice/graph/gog-color-scale-prefs.ui.h:4 #: ../plugins/plot_distrib/gog-boxplot.c:395 #: ../plugins/plot_distrib/gog-boxplot-prefs.ui.h:9 -#: ../plugins/plot_distrib/gog-histogram.c:372 +#: ../plugins/plot_distrib/gog-histogram.c:373 msgid "Vertical" msgstr "Vertical" @@ -1942,10 +1950,10 @@ #: ../goffice/graph/gog-error-bar.c:79 #: ../goffice/graph/gog-error-bar-prefs.ui.h:11 -#: ../goffice/graph/gog-object.c:203 +#: ../goffice/graph/gog-object.c:206 #: ../goffice/graph/gog-reg-curve-prefs.ui.h:13 -#: ../goffice/gtk/go-arrow-sel.ui.h:5 ../goffice/gtk/go-format-sel.c:1665 -#: ../goffice/gtk/go-format-sel.c:1845 ../goffice/utils/formats.c:370 +#: ../goffice/gtk/go-arrow-sel.ui.h:5 ../goffice/gtk/go-format-sel.c:1671 +#: ../goffice/gtk/go-format-sel.c:1851 ../goffice/utils/formats.c:370 #: ../goffice/utils/go-line.c:127 ../goffice/utils/go-style-prefs.ui.h:10 msgid "None" msgstr "Ninguno" @@ -1996,7 +2004,7 @@ #: ../goffice/graph/gog-error-bar-prefs.ui.h:9 #: ../plugins/plot_barcol/gog-1.5d.c:372 #: ../plugins/plot_distrib/gog-boxplot.c:428 -#: ../plugins/plot_distrib/gog-histogram.c:400 +#: ../plugins/plot_distrib/gog-histogram.c:401 #: ../plugins/plot_distrib/gog-probability-plot.c:317 #: ../plugins/plot_pie/gog-pie.c:344 ../plugins/plot_radar/gog-radar.c:324 msgid "Values" @@ -2220,102 +2228,102 @@ msgid "padding between the swatches in pts." msgstr "muestras entre los rellenos en pts." -#: ../goffice/graph/gog-object.c:174 ../goffice/graph/gog-object.c:193 +#: ../goffice/graph/gog-object.c:177 ../goffice/graph/gog-object.c:196 msgid "Top right" msgstr "Superior derecha" -#: ../goffice/graph/gog-object.c:176 ../goffice/graph/gog-object.c:199 +#: ../goffice/graph/gog-object.c:179 ../goffice/graph/gog-object.c:202 msgid "Bottom right" msgstr "Abajo derecha" -#: ../goffice/graph/gog-object.c:178 ../goffice/graph/gog-object.c:197 +#: ../goffice/graph/gog-object.c:181 ../goffice/graph/gog-object.c:200 msgid "Bottom left" msgstr "Abajo izquierda" -#: ../goffice/graph/gog-object.c:180 ../goffice/graph/gog-object.c:191 +#: ../goffice/graph/gog-object.c:183 ../goffice/graph/gog-object.c:194 msgid "Top left" msgstr "Superior izquierda" -#: ../goffice/graph/gog-object.c:184 ../goffice/utils/go-style-prefs.ui.h:29 +#: ../goffice/graph/gog-object.c:187 ../goffice/utils/go-style-prefs.ui.h:29 msgid "Fill" msgstr "Relleno" -#: ../goffice/graph/gog-object.c:185 ../plugins/plot_barcol/gog-dropbar.c:143 +#: ../goffice/graph/gog-object.c:188 ../plugins/plot_barcol/gog-dropbar.c:143 #: ../plugins/plot_xy/gog-xy-dropbar.c:322 msgid "Start" msgstr "Inicio" -#: ../goffice/graph/gog-object.c:186 ../plugins/plot_barcol/gog-dropbar.c:145 +#: ../goffice/graph/gog-object.c:189 ../plugins/plot_barcol/gog-dropbar.c:145 #: ../plugins/plot_xy/gog-xy-dropbar.c:324 msgid "End" msgstr "Fin" -#: ../goffice/graph/gog-object.c:187 ../goffice/graph/gog-object.c:195 -#: ../goffice/graph/gog-series.c:113 +#: ../goffice/graph/gog-object.c:190 ../goffice/graph/gog-object.c:198 +#: ../goffice/graph/gog-series.c:115 msgid "Center" msgstr "Centro" -#: ../goffice/graph/gog-object.c:205 +#: ../goffice/graph/gog-object.c:208 msgid "Absolute width" msgstr "Anchura absoluta" -#: ../goffice/graph/gog-object.c:207 +#: ../goffice/graph/gog-object.c:210 msgid "Absolute height" msgstr "Altura absoluta" -#: ../goffice/graph/gog-object.c:208 +#: ../goffice/graph/gog-object.c:211 msgid "Size" msgstr "Tamaño" -#: ../goffice/graph/gog-object.c:209 +#: ../goffice/graph/gog-object.c:212 msgid "Absolute size" msgstr "Tamaño absoluto" -#: ../goffice/graph/gog-object.c:828 +#: ../goffice/graph/gog-object.c:831 msgid "Object ID" msgstr "ID del objeto" -#: ../goffice/graph/gog-object.c:829 +#: ../goffice/graph/gog-object.c:832 msgid "Object numerical ID" msgstr "ID numérico del objeto" -#: ../goffice/graph/gog-object.c:835 +#: ../goffice/graph/gog-object.c:838 msgid "Position and size of object, in percentage of parent size" msgstr "Posición y tamaño del objeto, en porcentaje del tamaño del padre" -#: ../goffice/graph/gog-object.c:840 +#: ../goffice/graph/gog-object.c:843 msgid "Compass" msgstr "Brújula" -#: ../goffice/graph/gog-object.c:841 +#: ../goffice/graph/gog-object.c:844 msgid "Compass auto position flags" msgstr "Autoposicionar los señaladores de la brújula" -#: ../goffice/graph/gog-object.c:846 +#: ../goffice/graph/gog-object.c:849 msgid "Alignment" msgstr "Alineación" -#: ../goffice/graph/gog-object.c:847 +#: ../goffice/graph/gog-object.c:850 msgid "Alignment flag" msgstr "Alineación de las banderas" -#: ../goffice/graph/gog-object.c:852 ../goffice/graph/gog-object.c:853 +#: ../goffice/graph/gog-object.c:855 ../goffice/graph/gog-object.c:856 msgid "Is position manual" msgstr "La posición es manual" -#: ../goffice/graph/gog-object.c:859 +#: ../goffice/graph/gog-object.c:862 msgid "Anchor for manual position" msgstr "Anclaje para la posición manual" -#: ../goffice/graph/gog-object.c:864 ../goffice/graph/gog-object.c:865 +#: ../goffice/graph/gog-object.c:867 ../goffice/graph/gog-object.c:868 msgid "Should the object be hidden" msgstr "Si el objeto debería estar oculto" -#: ../goffice/graph/gog-object.c:870 +#: ../goffice/graph/gog-object.c:873 msgid "Manual size" msgstr "Tamaño manual" -#: ../goffice/graph/gog-object.c:871 +#: ../goffice/graph/gog-object.c:874 msgid "Whether the height or width are manually set" msgstr "Indica si la altura o la anchura se configuran manualmente" @@ -2411,132 +2419,132 @@ msgid "Number of pts separating charts in the grid" msgstr "Número de puntos que separan las gráficas en la rejilla" -#: ../goffice/graph/gog-plot.c:229 +#: ../goffice/graph/gog-plot.c:230 msgid "X axis:" msgstr "Eje X:" -#: ../goffice/graph/gog-plot.c:230 +#: ../goffice/graph/gog-plot.c:231 msgid "Y axis:" msgstr "Eje Y:" -#: ../goffice/graph/gog-plot.c:231 +#: ../goffice/graph/gog-plot.c:232 msgid "Z axis:" msgstr "Eje Z:" -#: ../goffice/graph/gog-plot.c:232 +#: ../goffice/graph/gog-plot.c:233 msgid "Circular axis:" msgstr "Eje circular:" -#: ../goffice/graph/gog-plot.c:233 +#: ../goffice/graph/gog-plot.c:234 msgid "Radial axis:" msgstr "Eje radial:" -#: ../goffice/graph/gog-plot.c:234 +#: ../goffice/graph/gog-plot.c:235 msgid "Pseudo 3D axis:" msgstr "Eje pseudo 3D:" -#: ../goffice/graph/gog-plot.c:235 +#: ../goffice/graph/gog-plot.c:236 msgid "Color axis:" msgstr "Ejes de color:" -#: ../goffice/graph/gog-plot.c:236 +#: ../goffice/graph/gog-plot.c:237 msgid "Bubble axis:" msgstr "Eje de burbuja:" -#: ../goffice/graph/gog-plot.c:302 +#: ../goffice/graph/gog-plot.c:303 msgid "Axes" msgstr "Ejes" -#: ../goffice/graph/gog-plot.c:438 ../goffice/graph/gog-theme.c:598 +#: ../goffice/graph/gog-plot.c:439 ../goffice/graph/gog-theme.c:598 #: ../goffice/graph/gog-theme-editor.ui.h:4 msgid "Series" msgstr "Series" -#: ../goffice/graph/gog-plot.c:459 +#: ../goffice/graph/gog-plot.c:460 msgid "Vary style by element" msgstr "Variar el estilo por elemento" -#: ../goffice/graph/gog-plot.c:460 +#: ../goffice/graph/gog-plot.c:461 msgid "Use a different style for each segment" msgstr "Usar un estilo diferente para cada segmento" -#: ../goffice/graph/gog-plot.c:465 +#: ../goffice/graph/gog-plot.c:466 msgid "X axis" msgstr "Eje X" -#: ../goffice/graph/gog-plot.c:466 +#: ../goffice/graph/gog-plot.c:467 msgid "Reference to X axis" msgstr "Referencia al eje X" -#: ../goffice/graph/gog-plot.c:471 +#: ../goffice/graph/gog-plot.c:472 msgid "Y axis" msgstr "Eje Y" -#: ../goffice/graph/gog-plot.c:472 +#: ../goffice/graph/gog-plot.c:473 msgid "Reference to Y axis" msgstr "Referencia al eje Y" -#: ../goffice/graph/gog-plot.c:477 +#: ../goffice/graph/gog-plot.c:478 msgid "Z axis" msgstr "Eje Z" -#: ../goffice/graph/gog-plot.c:478 +#: ../goffice/graph/gog-plot.c:479 msgid "Reference to Z axis" msgstr "Referencia al eje Z" -#: ../goffice/graph/gog-plot.c:483 +#: ../goffice/graph/gog-plot.c:484 msgid "Circular axis" msgstr "Eje circular" -#: ../goffice/graph/gog-plot.c:484 +#: ../goffice/graph/gog-plot.c:485 msgid "Reference to circular axis" msgstr "Referencia al eje circular" -#: ../goffice/graph/gog-plot.c:489 +#: ../goffice/graph/gog-plot.c:490 msgid "Radial axis" msgstr "Eje radial" -#: ../goffice/graph/gog-plot.c:490 +#: ../goffice/graph/gog-plot.c:491 msgid "Reference to radial axis" msgstr "Referencia al eje radial" -#: ../goffice/graph/gog-plot.c:495 +#: ../goffice/graph/gog-plot.c:496 msgid "Pseudo-3D axis" msgstr "Eje pseudo 3D" -#: ../goffice/graph/gog-plot.c:496 +#: ../goffice/graph/gog-plot.c:497 msgid "Reference to pseudo-3D axis" msgstr "Referencia al eje pseudo 3D" -#: ../goffice/graph/gog-plot.c:501 +#: ../goffice/graph/gog-plot.c:502 msgid "Color axis" msgstr "Ejes de color" -#: ../goffice/graph/gog-plot.c:502 +#: ../goffice/graph/gog-plot.c:503 msgid "Reference to color axis" msgstr "Referencia a los ejes de color" -#: ../goffice/graph/gog-plot.c:507 +#: ../goffice/graph/gog-plot.c:508 msgid "Bubble axis" msgstr "Eje de burbuja" -#: ../goffice/graph/gog-plot.c:508 +#: ../goffice/graph/gog-plot.c:509 msgid "Reference to bubble axis" msgstr "Referencia al eje de burbuja" -#: ../goffice/graph/gog-plot.c:513 +#: ../goffice/graph/gog-plot.c:514 msgid "Plot group" msgstr "Grupo de dibujado" -#: ../goffice/graph/gog-plot.c:514 +#: ../goffice/graph/gog-plot.c:515 msgid "Name of plot group if any" msgstr "Nombre del grupo de dibujado si lo hay" -#: ../goffice/graph/gog-plot.c:519 +#: ../goffice/graph/gog-plot.c:520 msgid "Guru hints" msgstr "Consejos de gurú" -#: ../goffice/graph/gog-plot.c:520 +#: ../goffice/graph/gog-plot.c:521 msgid "" "Semicolon separated list of hints for automatic addition of objects in guru " "dialog" @@ -2544,19 +2552,19 @@ "Lista de los consejos de gurú separados por punto y coma para la adición " "automática de objetos en el diálogo de gurú" -#: ../goffice/graph/gog-plot.c:526 +#: ../goffice/graph/gog-plot.c:527 msgid "Default interpolation" msgstr "Interpolación predeterminada" -#: ../goffice/graph/gog-plot.c:527 +#: ../goffice/graph/gog-plot.c:528 msgid "Default type of series line interpolation" msgstr "Tipo predeterminado de series de líneas de interpolación" -#: ../goffice/graph/gog-plot.c:1175 +#: ../goffice/graph/gog-plot.c:1176 msgid "Move plot area" msgstr "Mover área de dibujado" -#: ../goffice/graph/gog-plot.c:1227 +#: ../goffice/graph/gog-plot.c:1228 msgid "Resize plot area" msgstr "Redimensionar área de dibujado" @@ -2671,139 +2679,139 @@ msgid "Display _regression coefficient R²" msgstr "Visualizar el coeficiente de _regresión R²" -#: ../goffice/graph/gog-renderer.c:1874 ../goffice/graph/gog-view.c:699 +#: ../goffice/graph/gog-renderer.c:1897 ../goffice/graph/gog-view.c:698 msgid "Model" msgstr "Modelo" -#: ../goffice/graph/gog-renderer.c:1875 +#: ../goffice/graph/gog-renderer.c:1898 msgid "The GogGraph this renderer displays" msgstr "El GogGraph que este renderizador muestra" -#: ../goffice/graph/gog-renderer.c:1880 +#: ../goffice/graph/gog-renderer.c:1903 msgid "View" msgstr "Ver" -#: ../goffice/graph/gog-renderer.c:1881 +#: ../goffice/graph/gog-renderer.c:1904 msgid "the GogView this renderer is displaying" msgstr "la GogView que está mostrando este renderizador" -#: ../goffice/graph/gog-series.c:106 +#: ../goffice/graph/gog-series.c:108 msgid "Y origin" msgstr "Origen Y" -#: ../goffice/graph/gog-series.c:107 +#: ../goffice/graph/gog-series.c:109 msgid "X origin" msgstr "Origen X" -#: ../goffice/graph/gog-series.c:112 +#: ../goffice/graph/gog-series.c:114 msgid "Origin" msgstr "Origen" -#: ../goffice/graph/gog-series.c:114 +#: ../goffice/graph/gog-series.c:116 msgid "Edge" msgstr "Borde" -#: ../goffice/graph/gog-series.c:115 +#: ../goffice/graph/gog-series.c:117 msgid "Self" msgstr "Self" -#: ../goffice/graph/gog-series.c:116 +#: ../goffice/graph/gog-series.c:118 msgid "Next series" msgstr "Siguientes series" -#: ../goffice/graph/gog-series.c:117 +#: ../goffice/graph/gog-series.c:119 msgid "X axis minimum" msgstr "Eje X mínimo" -#: ../goffice/graph/gog-series.c:118 +#: ../goffice/graph/gog-series.c:120 msgid "X axis maximum" msgstr "Eje X máximo" -#: ../goffice/graph/gog-series.c:119 +#: ../goffice/graph/gog-series.c:121 msgid "Y axis minimum" msgstr "Eje Y mínimo" -#: ../goffice/graph/gog-series.c:120 +#: ../goffice/graph/gog-series.c:122 msgid "Y axis maximum" msgstr "Eje Y máximo" -#: ../goffice/graph/gog-series.c:233 ../goffice/graph/gog-series-labels.c:414 +#: ../goffice/graph/gog-series.c:235 ../goffice/graph/gog-series-labels.c:414 msgid "Index:" msgstr "Índice:" -#: ../goffice/graph/gog-series.c:246 ../plugins/plot_pie/gog-pie.c:91 +#: ../goffice/graph/gog-series.c:248 ../plugins/plot_pie/gog-pie.c:91 msgid "Settings" msgstr "Configuración" -#: ../goffice/graph/gog-series.c:287 ../goffice/graph/gog-series-labels.c:917 +#: ../goffice/graph/gog-series.c:289 ../goffice/graph/gog-series-labels.c:917 msgid "Index" msgstr "Índice" -#: ../goffice/graph/gog-series.c:288 ../goffice/graph/gog-series-labels.c:918 +#: ../goffice/graph/gog-series.c:290 ../goffice/graph/gog-series-labels.c:918 msgid "Index of the corresponding data element" msgstr "Índice del elemento de datos correspondiente" -#: ../goffice/graph/gog-series.c:624 ../goffice/graph/gog-trend-line.c:99 +#: ../goffice/graph/gog-series.c:626 ../goffice/graph/gog-trend-line.c:99 msgid "_Show in Legend" msgstr "_Visualizar leyenda" -#: ../goffice/graph/gog-series.c:634 +#: ../goffice/graph/gog-series.c:636 msgid "Data" msgstr "Datos" -#: ../goffice/graph/gog-series.c:696 +#: ../goffice/graph/gog-series.c:698 msgid "Derivative at first point of the clamped cubic spline." msgstr "Derivada en el primer punto del splin cúbico sujeto." -#: ../goffice/graph/gog-series.c:701 +#: ../goffice/graph/gog-series.c:703 msgid "Derivative at last point of the clamped cubic spline." msgstr "Derivada en el último punto del splin cúbico sujeto." -#: ../goffice/graph/gog-series.c:774 ../goffice/graph/gog-series-labels.c:1407 +#: ../goffice/graph/gog-series.c:776 ../goffice/graph/gog-series-labels.c:1407 msgid "Point" msgstr "Punto" -#: ../goffice/graph/gog-series.c:780 +#: ../goffice/graph/gog-series.c:782 msgid "Regression curve" msgstr "Curva de regresión" -#: ../goffice/graph/gog-series.c:788 ../goffice/graph/gog-theme.c:592 +#: ../goffice/graph/gog-series.c:790 ../goffice/graph/gog-theme.c:592 msgid "Trend line" msgstr "Línea de tendencia" -#: ../goffice/graph/gog-series.c:796 +#: ../goffice/graph/gog-series.c:798 msgid "Data labels" msgstr "Etiquetas de datos" -#: ../goffice/graph/gog-series.c:831 ../goffice/graph/gog-trend-line.c:151 +#: ../goffice/graph/gog-series.c:833 ../goffice/graph/gog-trend-line.c:151 msgid "Has-legend" msgstr "Tiene leyenda" -#: ../goffice/graph/gog-series.c:832 +#: ../goffice/graph/gog-series.c:834 msgid "Should the series show up in legends" msgstr "Si las series deberían mostrarse en leyendas" -#: ../goffice/graph/gog-series.c:837 ../goffice/graph/gog-series-prefs.ui.h:2 +#: ../goffice/graph/gog-series.c:839 ../goffice/graph/gog-series-prefs.ui.h:2 msgid "Interpolation" msgstr "Interpolación" -#: ../goffice/graph/gog-series.c:838 +#: ../goffice/graph/gog-series.c:840 msgid "Type of line interpolation" msgstr "Tipo de línea de interpolación" -#: ../goffice/graph/gog-series.c:843 +#: ../goffice/graph/gog-series.c:845 msgid "Interpolation skip invalid" msgstr "El salto de interpolación no es válido" -#: ../goffice/graph/gog-series.c:844 +#: ../goffice/graph/gog-series.c:846 msgid "Should the series interpolation ignore the invalid data" msgstr "Si las series de interpolación deberían ignorar los datos no válidos" -#: ../goffice/graph/gog-series.c:849 +#: ../goffice/graph/gog-series.c:851 msgid "Fill type" msgstr "Tipo de rellenado" -#: ../goffice/graph/gog-series.c:850 +#: ../goffice/graph/gog-series.c:852 msgid "How to fill the area" msgstr "Cómo rellenar el área" @@ -3010,7 +3018,7 @@ #: ../plugins/plot_barcol/gog-line.c:612 #: ../plugins/plot_barcol/gog-minmax.c:195 #: ../plugins/plot_distrib/gog-boxplot.c:172 -#: ../plugins/plot_distrib/gog-histogram.c:343 +#: ../plugins/plot_distrib/gog-histogram.c:344 #: ../plugins/plot_pie/gog-pie.c:279 ../plugins/plot_pie/gog-pie.c:442 #: ../plugins/plot_radar/gog-radar.c:409 ../plugins/plot_radar/gog-radar.c:600 #: ../plugins/plot_surface/gog-xyz.c:103 @@ -3030,23 +3038,23 @@ msgid "Should the trend line show up in legends" msgstr "Indica si la línea de tendencia se debe mostrar en las leyendas" -#: ../goffice/graph/gog-view.c:129 +#: ../goffice/graph/gog-view.c:127 msgid "Select object" msgstr "Seleccionar objeto" -#: ../goffice/graph/gog-view.c:200 +#: ../goffice/graph/gog-view.c:198 msgid "Move" msgstr "Mover" -#: ../goffice/graph/gog-view.c:247 +#: ../goffice/graph/gog-view.c:245 msgid "Resize object" msgstr "Redimensionar objeto" -#: ../goffice/graph/gog-view.c:694 +#: ../goffice/graph/gog-view.c:693 msgid "the GogView parent" msgstr "el padre GogView" -#: ../goffice/graph/gog-view.c:700 +#: ../goffice/graph/gog-view.c:699 msgid "The GogObject this view displays" msgstr "El GogObject que muestra esta vista" @@ -3054,11 +3062,11 @@ msgid "Series number" msgstr "Número de serie" -#: ../goffice/gtk/go-action-combo-text.c:224 +#: ../goffice/gtk/go-action-combo-text.c:228 msgid "Case Sensitive" msgstr "Sensible a capitalización" -#: ../goffice/gtk/go-action-combo-text.c:225 +#: ../goffice/gtk/go-action-combo-text.c:229 msgid "Should the text comparison be case sensitive" msgstr "Si la comparación de texto debería coincidir con la capitalización" @@ -4354,164 +4362,164 @@ msgstr "Personalizado" #. See http://en.wikipedia.org/wiki/Ampere -#: ../goffice/gtk/go-format-sel.c:309 +#: ../goffice/gtk/go-format-sel.c:311 msgid "A (ampere)" msgstr "A (amperio)" #. See http://en.wikipedia.org/wiki/Becquerel -#: ../goffice/gtk/go-format-sel.c:311 +#: ../goffice/gtk/go-format-sel.c:313 msgid "Bq (becquerel)" msgstr "Bq (becquerel)" #. See http://en.wikipedia.org/wiki/Candela -#: ../goffice/gtk/go-format-sel.c:313 +#: ../goffice/gtk/go-format-sel.c:315 msgid "cd (candela)" msgstr "cd (candela)" #. See http://en.wikipedia.org/wiki/Coulomb -#: ../goffice/gtk/go-format-sel.c:315 +#: ../goffice/gtk/go-format-sel.c:317 msgid "C (coulomb)" msgstr "C (culombio)" #. See http://en.wikipedia.org/wiki/Degree_Celsius -#: ../goffice/gtk/go-format-sel.c:317 +#: ../goffice/gtk/go-format-sel.c:319 msgid "°C (degree Celsius)" msgstr "°C (grado Celsius)" #. See http://en.wikipedia.org/wiki/Farad -#: ../goffice/gtk/go-format-sel.c:319 +#: ../goffice/gtk/go-format-sel.c:321 msgid "F (farad)" msgstr "F (faradio)" #. See http://en.wikipedia.org/wiki/Gray_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:321 +#: ../goffice/gtk/go-format-sel.c:323 msgid "Gy (gray)" msgstr "Gy (gray)" #. See http://en.wikipedia.org/wiki/Henry_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:323 +#: ../goffice/gtk/go-format-sel.c:325 msgid "H (henry)" msgstr "H (henrio)" #. See http://en.wikipedia.org/wiki/Hertz -#: ../goffice/gtk/go-format-sel.c:325 +#: ../goffice/gtk/go-format-sel.c:327 msgid "Hz (hertz)" msgstr "Hz (hertzio)" #. See http://en.wikipedia.org/wiki/Joule -#: ../goffice/gtk/go-format-sel.c:327 +#: ../goffice/gtk/go-format-sel.c:329 msgid "J (joule)" msgstr "J (julio)" #. See http://en.wikipedia.org/wiki/Kelvin -#: ../goffice/gtk/go-format-sel.c:329 +#: ../goffice/gtk/go-format-sel.c:331 msgid "K (kelvin)" msgstr "K (kelvin)" #. See http://en.wikipedia.org/wiki/Kilogram -#: ../goffice/gtk/go-format-sel.c:331 +#: ../goffice/gtk/go-format-sel.c:333 msgid "kg (kilogram)" msgstr "kg (kilogramo)" #. See http://en.wikipedia.org/wiki/Lumen_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:333 +#: ../goffice/gtk/go-format-sel.c:335 msgid "lm (lumen)" msgstr "lm (lumen)" #. See http://en.wikipedia.org/wiki/Lux -#: ../goffice/gtk/go-format-sel.c:335 +#: ../goffice/gtk/go-format-sel.c:337 msgid "lx (lux)" msgstr "lx (lux)" #. See http://en.wikipedia.org/wiki/Metre -#: ../goffice/gtk/go-format-sel.c:337 +#: ../goffice/gtk/go-format-sel.c:339 msgid "m (meter)" msgstr "m (metro)" #. See http://en.wikipedia.org/wiki/Mole_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:339 +#: ../goffice/gtk/go-format-sel.c:341 msgid "mol (mole)" msgstr "mol (mol)" #. See http://en.wikipedia.org/wiki/Newton_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:341 +#: ../goffice/gtk/go-format-sel.c:343 msgid "N (newton)" msgstr "N (newton)" #. See http://en.wikipedia.org/wiki/Ohm_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:343 +#: ../goffice/gtk/go-format-sel.c:345 msgid "Ω (ohm)" msgstr "Ω (ohmio)" #. See http://en.wikipedia.org/wiki/Pascal_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:345 +#: ../goffice/gtk/go-format-sel.c:347 msgid "Pa (pascal)" msgstr "Pa (pascal)" #. See http://en.wikipedia.org/wiki/Radian -#: ../goffice/gtk/go-format-sel.c:347 +#: ../goffice/gtk/go-format-sel.c:349 msgid "rad (radian)" msgstr "rad (radián)" #. See http://en.wikipedia.org/wiki/Second -#: ../goffice/gtk/go-format-sel.c:349 +#: ../goffice/gtk/go-format-sel.c:351 msgid "s (second)" msgstr "s (segundo)" #. See http://en.wikipedia.org/wiki/Siemens_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:351 +#: ../goffice/gtk/go-format-sel.c:353 msgid "S (siemens)" msgstr "S (siemens)" #. See http://en.wikipedia.org/wiki/Steradian -#: ../goffice/gtk/go-format-sel.c:353 +#: ../goffice/gtk/go-format-sel.c:355 msgid "sr (steradian)" msgstr "sr (estereorradián)" #. See http://en.wikipedia.org/wiki/Sievert -#: ../goffice/gtk/go-format-sel.c:355 +#: ../goffice/gtk/go-format-sel.c:357 msgid "Sv (sievert)" msgstr "Sv (sievert)" #. See http://en.wikipedia.org/wiki/Tesla_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:357 +#: ../goffice/gtk/go-format-sel.c:359 msgid "T (tesla)" msgstr "T (tesla)" #. See http://en.wikipedia.org/wiki/Katal -#: ../goffice/gtk/go-format-sel.c:359 +#: ../goffice/gtk/go-format-sel.c:361 msgid "kat (katal)" msgstr "kat (katal)" #. See http://en.wikipedia.org/wiki/Volt -#: ../goffice/gtk/go-format-sel.c:361 +#: ../goffice/gtk/go-format-sel.c:363 msgid "V (volt)" msgstr "V (voltio)" #. See http://en.wikipedia.org/wiki/Watt -#: ../goffice/gtk/go-format-sel.c:363 +#: ../goffice/gtk/go-format-sel.c:365 msgid "W (watt)" msgstr "W (watio)" #. See http://en.wikipedia.org/wiki/Weber_%28Wb%29 -#: ../goffice/gtk/go-format-sel.c:365 +#: ../goffice/gtk/go-format-sel.c:367 msgid "Wb (weber)" msgstr "Wb (weber)" -#: ../goffice/gtk/go-format-sel.c:1030 ../goffice/gtk/go-format-sel.ui.h:41 +#: ../goffice/gtk/go-format-sel.c:1032 ../goffice/gtk/go-format-sel.ui.h:41 msgid "Append no further unit." msgstr "No añadir ninguna unidad." -#: ../goffice/gtk/go-format-sel.c:1037 +#: ../goffice/gtk/go-format-sel.c:1039 #, c-format msgid "Append '%s'." msgstr "Añadir «%s»." -#: ../goffice/gtk/go-format-sel.c:1573 +#: ../goffice/gtk/go-format-sel.c:1579 msgid "Negative Number Format" msgstr "Formato del número negativo" -#: ../goffice/gtk/go-format-sel.c:1633 +#: ../goffice/gtk/go-format-sel.c:1639 msgid "Number Formats" msgstr "Formatos numéricos" @@ -5913,7 +5921,7 @@ msgid "Semi-circles" msgstr "Semicírculos" -#: ../goffice/gtk/go-pattern-selector.c:87 ../goffice/utils/go-pattern.c:212 +#: ../goffice/gtk/go-pattern-selector.c:87 ../goffice/utils/go-pattern.c:211 msgid "Thatch" msgstr "Techo" @@ -5921,7 +5929,7 @@ msgid "Large circles" msgstr "Grandes círculos" -#: ../goffice/gtk/go-pattern-selector.c:89 ../goffice/utils/go-pattern.c:224 +#: ../goffice/gtk/go-pattern-selector.c:89 ../goffice/utils/go-pattern.c:223 msgid "Bricks" msgstr "Ladrillos" @@ -6670,17 +6678,17 @@ msgid "Zimbabwe, Zimbabwe Dollars" msgstr "Zimbabwe, dólar de Zimbabwe" -#: ../goffice/utils/go-emf.c:234 +#: ../goffice/utils/go-emf.c:233 #, c-format msgid "Could not load the image data\n" msgstr "No se pudieron cargar los datos de la imagen\n" -#: ../goffice/utils/go-emf.c:273 +#: ../goffice/utils/go-emf.c:272 #, c-format msgid "Could not input the image data\n" msgstr "No se pudieron introducir los datos de la imagen\n" -#: ../goffice/utils/go-emf.c:4918 ../goffice/utils/go-emf.c:4924 +#: ../goffice/utils/go-emf.c:4916 ../goffice/utils/go-emf.c:4922 #, c-format msgid "Invalid image data\n" msgstr "Datos de la imagen no válidos\n" @@ -6783,20 +6791,20 @@ msgid "left" msgstr "izquierda" -#: ../goffice/utils/go-glib-extras.c:919 +#: ../goffice/utils/go-glib-extras.c:960 msgid "yes" msgstr "sí" -#: ../goffice/utils/go-glib-extras.c:925 +#: ../goffice/utils/go-glib-extras.c:966 msgid "no" msgstr "no" -#: ../goffice/utils/go-glib-extras.c:1144 +#: ../goffice/utils/go-glib-extras.c:1185 #, c-format msgid "Quoted string not terminated" msgstr "Falta la comilla de finalización" -#: ../goffice/utils/go-glib-extras.c:1151 +#: ../goffice/utils/go-glib-extras.c:1192 #, c-format msgid "Syntax error" msgstr "Error de sintaxis" @@ -6841,7 +6849,7 @@ msgid "Image height in pixels" msgstr "Altura de la imagen en píxeles" -#: ../goffice/utils/go-line.c:129 ../goffice/utils/go-pattern.c:82 +#: ../goffice/utils/go-line.c:129 ../goffice/utils/go-pattern.c:81 msgid "Solid" msgstr "Sólido" @@ -6985,92 +6993,92 @@ msgid "left half bar" msgstr "media barra izquierda" -#: ../goffice/utils/go-pattern.c:89 +#: ../goffice/utils/go-pattern.c:88 #, no-c-format msgid "75% Grey" msgstr "Gris 75%" -#: ../goffice/utils/go-pattern.c:96 +#: ../goffice/utils/go-pattern.c:95 #, no-c-format msgid "50% Grey" msgstr "Gris 50%" -#: ../goffice/utils/go-pattern.c:103 +#: ../goffice/utils/go-pattern.c:102 #, no-c-format msgid "25% Grey" msgstr "Gris 25%" -#: ../goffice/utils/go-pattern.c:110 +#: ../goffice/utils/go-pattern.c:109 #, no-c-format msgid "12.5% Grey" msgstr "Gris 12.5%" -#: ../goffice/utils/go-pattern.c:117 +#: ../goffice/utils/go-pattern.c:116 #, no-c-format msgid "6.25% Grey" msgstr "Gris 6.25%" -#: ../goffice/utils/go-pattern.c:123 +#: ../goffice/utils/go-pattern.c:122 msgid "Horizontal Stripe" msgstr "Línea horizontal" -#: ../goffice/utils/go-pattern.c:129 +#: ../goffice/utils/go-pattern.c:128 msgid "Vertical Stripe" msgstr "Línea vertical" -#: ../goffice/utils/go-pattern.c:135 +#: ../goffice/utils/go-pattern.c:134 msgid "Reverse Diagonal Stripe" msgstr "Línea diagonal inversa" -#: ../goffice/utils/go-pattern.c:141 +#: ../goffice/utils/go-pattern.c:140 msgid "Diagonal Stripe" msgstr "Línea diagonal" -#: ../goffice/utils/go-pattern.c:147 +#: ../goffice/utils/go-pattern.c:146 msgid "Diagonal Crosshatch" msgstr "Línea sombreada diagonal" -#: ../goffice/utils/go-pattern.c:153 +#: ../goffice/utils/go-pattern.c:152 msgid "Thick Diagonal Crosshatch" msgstr "Línea sombreada diagonal gruesa" -#: ../goffice/utils/go-pattern.c:159 +#: ../goffice/utils/go-pattern.c:158 msgid "Thin Horizontal Stripe" msgstr "Línea horizontal fina" -#: ../goffice/utils/go-pattern.c:165 +#: ../goffice/utils/go-pattern.c:164 msgid "Thin Vertical Stripe" msgstr "Línea vertical fina" -#: ../goffice/utils/go-pattern.c:171 +#: ../goffice/utils/go-pattern.c:170 msgid "Thin Reverse Diagonal Stripe" msgstr "Línea diagonal inversa fina" -#: ../goffice/utils/go-pattern.c:177 +#: ../goffice/utils/go-pattern.c:176 msgid "Thin Diagonal Stripe" msgstr "Línea diagonal fina" -#: ../goffice/utils/go-pattern.c:183 +#: ../goffice/utils/go-pattern.c:182 msgid "Thin Horizontal Crosshatch" msgstr "Línea sombreada horizontal fina" -#: ../goffice/utils/go-pattern.c:189 +#: ../goffice/utils/go-pattern.c:188 msgid "Thin Diagonal Crosshatch" msgstr "Línea diagonal sombreada fina" -#: ../goffice/utils/go-pattern.c:195 +#: ../goffice/utils/go-pattern.c:194 msgid "Foreground Solid" msgstr "Primer plano sólido" -#: ../goffice/utils/go-pattern.c:201 +#: ../goffice/utils/go-pattern.c:200 msgid "Small Circles" msgstr "Pequeños círculos" -#: ../goffice/utils/go-pattern.c:206 +#: ../goffice/utils/go-pattern.c:205 msgid "Semi Circles" msgstr "Semicírculos" -#: ../goffice/utils/go-pattern.c:218 +#: ../goffice/utils/go-pattern.c:217 msgid "Large Circles" msgstr "Grandes círculos" @@ -7397,7 +7405,7 @@ msgstr "Barras de error" #: ../plugins/plot_barcol/gog-1.5d.c:661 -#: ../plugins/plot_distrib/gog-histogram.c:1119 +#: ../plugins/plot_distrib/gog-histogram.c:1120 msgid "Drop lines" msgstr "Líneas deslizantes" @@ -7407,8 +7415,8 @@ msgstr "Líneas" #: ../plugins/plot_barcol/gog-1.5d.c:698 ../plugins/plot_radar/gog-radar.c:1354 -#: ../plugins/plot_radar/gog-radar.c:1480 ../plugins/plot_xy/gog-xy.c:2182 -#: ../plugins/plot_xy/gog-xy.c:2188 +#: ../plugins/plot_radar/gog-radar.c:1480 ../plugins/plot_xy/gog-xy.c:2187 +#: ../plugins/plot_xy/gog-xy.c:2193 msgid "GogErrorBar *" msgstr "GogErrorBar *" @@ -7461,7 +7469,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:130 #: ../plugins/plot_barcol/gog-line.c:641 #: ../plugins/plot_distrib/gog-boxplot.c:413 -#: ../plugins/plot_distrib/gog-histogram.c:384 +#: ../plugins/plot_distrib/gog-histogram.c:385 #: ../plugins/plot_radar/gog-radar.c:447 ../plugins/plot_radar/gog-radar.c:522 #: ../plugins/plot_xy/gog-xy.c:398 ../plugins/plot_xy/gog-xy-dropbar.c:296 msgid "Displayed under the grids" @@ -7472,7 +7480,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:131 #: ../plugins/plot_barcol/gog-line.c:642 #: ../plugins/plot_distrib/gog-boxplot.c:414 -#: ../plugins/plot_distrib/gog-histogram.c:385 +#: ../plugins/plot_distrib/gog-histogram.c:386 #: ../plugins/plot_radar/gog-radar.c:448 ../plugins/plot_radar/gog-radar.c:523 #: ../plugins/plot_xy/gog-xy.c:399 ../plugins/plot_xy/gog-xy-dropbar.c:297 msgid "Should the plot be displayed before the grids" @@ -7495,11 +7503,11 @@ msgid "PlotDropBar" msgstr "DibujoBarraDeslizante" -#: ../plugins/plot_barcol/gog-line.c:342 ../plugins/plot_xy/gog-xy.c:2199 +#: ../plugins/plot_barcol/gog-line.c:342 ../plugins/plot_xy/gog-xy.c:2204 msgid "Clamp at start" msgstr "Fijar al comienzo" -#: ../plugins/plot_barcol/gog-line.c:343 ../plugins/plot_xy/gog-xy.c:2200 +#: ../plugins/plot_barcol/gog-line.c:343 ../plugins/plot_xy/gog-xy.c:2205 msgid "" "Slope at start of the interpolated curve when using clamped spline " "interpolation" @@ -7507,11 +7515,11 @@ "Pendiente al inicio de la curva interpolada al usar interpolación de splin " "sujeto" -#: ../plugins/plot_barcol/gog-line.c:348 ../plugins/plot_xy/gog-xy.c:2205 +#: ../plugins/plot_barcol/gog-line.c:348 ../plugins/plot_xy/gog-xy.c:2210 msgid "Clamp at end" msgstr "Fijar al final" -#: ../plugins/plot_barcol/gog-line.c:349 ../plugins/plot_xy/gog-xy.c:2206 +#: ../plugins/plot_barcol/gog-line.c:349 ../plugins/plot_xy/gog-xy.c:2211 msgid "" "Slope at end of the interpolated curve when using clamped spline " "interpolation" @@ -7938,24 +7946,24 @@ msgid "Histogram" msgstr "Histograma" -#: ../plugins/plot_distrib/gog-histogram.c:373 +#: ../plugins/plot_distrib/gog-histogram.c:374 msgid "Draw the histogram vertically or horizontally" msgstr "Dibujar el histograma vertical u horizontalmente" -#: ../plugins/plot_distrib/gog-histogram.c:378 +#: ../plugins/plot_distrib/gog-histogram.c:379 msgid "Cumulative" msgstr "Acumulativo" -#: ../plugins/plot_distrib/gog-histogram.c:379 +#: ../plugins/plot_distrib/gog-histogram.c:380 msgid "Use cumulated data" msgstr "Usar datos acumulados" -#: ../plugins/plot_distrib/gog-histogram.c:398 -#: ../plugins/plot_distrib/gog-histogram.c:488 +#: ../plugins/plot_distrib/gog-histogram.c:399 +#: ../plugins/plot_distrib/gog-histogram.c:489 msgid "Limits" msgstr "Límites" -#: ../plugins/plot_distrib/gog-histogram.c:447 +#: ../plugins/plot_distrib/gog-histogram.c:448 msgid "" "Label for the first Y category. If not set or empty, \"First values\" will " "be used." @@ -7963,7 +7971,7 @@ "Etiqueta para la primera categoría Y. Se usará «Primeros valores» si no se " "establece o se deja vacía." -#: ../plugins/plot_distrib/gog-histogram.c:452 +#: ../plugins/plot_distrib/gog-histogram.c:453 msgid "" "Label for the second Y category. If not set or empty, \"Second values\" will " "be used." @@ -7971,19 +7979,19 @@ "Etiqueta para la segunda categoría Y. Se usará «Segundos valores» si no se " "establece o se deja vacía." -#: ../plugins/plot_distrib/gog-histogram.c:458 +#: ../plugins/plot_distrib/gog-histogram.c:459 msgid "Categories labels" msgstr "Etiquetas de categorías" -#: ../plugins/plot_distrib/gog-histogram.c:490 -#: ../plugins/plot_distrib/gog-histogram.c:766 +#: ../plugins/plot_distrib/gog-histogram.c:491 +#: ../plugins/plot_distrib/gog-histogram.c:767 msgid "First values" msgstr "Primeros valores" -#: ../plugins/plot_distrib/gog-histogram.c:492 -#: ../plugins/plot_distrib/gog-histogram.c:774 -#: ../plugins/plot_distrib/gog-histogram.c:785 -#: ../plugins/plot_distrib/gog-histogram.c:797 +#: ../plugins/plot_distrib/gog-histogram.c:493 +#: ../plugins/plot_distrib/gog-histogram.c:775 +#: ../plugins/plot_distrib/gog-histogram.c:786 +#: ../plugins/plot_distrib/gog-histogram.c:798 msgid "Second values" msgstr "Segundos valores" @@ -8892,27 +8900,27 @@ msgid "XYColor" msgstr "ColorXY" -#: ../plugins/plot_xy/gog-xy.c:2110 ../plugins/plot_xy/gog-xy.c:2181 +#: ../plugins/plot_xy/gog-xy.c:2115 ../plugins/plot_xy/gog-xy.c:2186 msgid "X error bars" msgstr "Barras de error de X" -#: ../plugins/plot_xy/gog-xy.c:2113 ../plugins/plot_xy/gog-xy.c:2187 +#: ../plugins/plot_xy/gog-xy.c:2118 ../plugins/plot_xy/gog-xy.c:2192 msgid "Y error bars" msgstr "Barras de error de Y" -#: ../plugins/plot_xy/gog-xy.c:2122 +#: ../plugins/plot_xy/gog-xy.c:2127 msgid "Horizontal drop lines" msgstr "Líneas deslizantes horizontales" -#: ../plugins/plot_xy/gog-xy.c:2130 +#: ../plugins/plot_xy/gog-xy.c:2135 msgid "Vertical drop lines" msgstr "Líneas deslizantes verticales" -#: ../plugins/plot_xy/gog-xy.c:2193 +#: ../plugins/plot_xy/gog-xy.c:2198 msgid "Invalid as zero" msgstr "No válido como cero" -#: ../plugins/plot_xy/gog-xy.c:2194 +#: ../plugins/plot_xy/gog-xy.c:2199 msgid "Replace invalid values by 0 when drawing markers or bubbles" msgstr "" "Reemplazar los valores no válidos por 0 al dibujar marcadores o burbujas" diff -Nru goffice-0.10.56/po/sl.po goffice-0.10.57/po/sl.po --- goffice-0.10.56/po/sl.po 2023-02-03 01:53:50.000000000 +0000 +++ goffice-0.10.57/po/sl.po 2024-01-18 22:00:02.000000000 +0000 @@ -11,8 +11,8 @@ msgstr "" "Project-Id-Version: goffice master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/goffice/issues\n" -"POT-Creation-Date: 2022-09-21 15:58+0000\n" -"PO-Revision-Date: 2022-09-26 23:22+0200\n" +"POT-Creation-Date: 2023-10-29 10:42+0000\n" +"PO-Revision-Date: 2024-01-09 22:20+0100\n" "Last-Translator: Martin Srebotnjak \n" "Language-Team: Slovenian GNOME Translation Team \n" "Language: sl\n" @@ -22,7 +22,7 @@ "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" "X-Poedit-SourceCharset: utf-8\n" -"X-Generator: Poedit 3.1.1\n" +"X-Generator: Poedit 2.2.1\n" #: ../goffice/app/file.c:177 ../goffice/app/file.c:632 msgid "ID" @@ -447,7 +447,7 @@ msgstr "Funkcija čiščenja znotraj vstavka je vrnila napako." #: ../goffice/app/go-plugin-service.c:229 ../goffice/gtk/go-format-sel.c:59 -#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5521 +#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5525 msgid "General" msgstr "Splošno" @@ -611,12 +611,41 @@ msgid "Arrow for line's end" msgstr "Puščica za konec črte" +#: ../goffice/canvas/goc-canvas.c:365 ../goffice/canvas/goc-component.c:309 +#: ../goffice/canvas/goc-component.c:310 ../goffice/canvas/goc-ellipse.c:291 +#: ../goffice/canvas/goc-graph.c:472 ../goffice/canvas/goc-graph.c:473 +#: ../goffice/canvas/goc-image.c:300 ../goffice/canvas/goc-pixbuf.c:247 +#: ../goffice/canvas/goc-rectangle.c:350 ../goffice/canvas/goc-widget.c:839 +#: ../goffice/graph/gog-color-scale.c:340 ../goffice/graph/gog-graph.c:499 +#: ../goffice/graph/gog-object.c:207 ../goffice/utils/go-image.c:510 +#: ../plugins/plot_xy/gog-xy-dropbar.c:308 +msgid "Width" +msgstr "Širina" + +#: ../goffice/canvas/goc-canvas.c:366 +msgid "The width of the canvas" +msgstr "Širina platna" + +#: ../goffice/canvas/goc-canvas.c:371 ../goffice/canvas/goc-component.c:303 +#: ../goffice/canvas/goc-component.c:304 ../goffice/canvas/goc-ellipse.c:297 +#: ../goffice/canvas/goc-graph.c:466 ../goffice/canvas/goc-graph.c:467 +#: ../goffice/canvas/goc-image.c:306 ../goffice/canvas/goc-pixbuf.c:253 +#: ../goffice/canvas/goc-rectangle.c:356 ../goffice/canvas/goc-widget.c:845 +#: ../goffice/graph/gog-graph.c:505 ../goffice/graph/gog-object.c:209 +#: ../goffice/utils/go-image.c:514 +msgid "Height" +msgstr "Višina" + +#: ../goffice/canvas/goc-canvas.c:372 +msgid "The height of the canvas" +msgstr "Višina platna" + #: ../goffice/canvas/goc-circle.c:188 ../goffice/canvas/goc-component.c:291 #: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:454 #: ../goffice/canvas/goc-group.c:294 ../goffice/canvas/goc-image.c:288 #: ../goffice/canvas/goc-path.c:294 ../goffice/canvas/goc-pixbuf.c:235 #: ../goffice/canvas/goc-rectangle.c:338 ../goffice/canvas/goc-text.c:468 -#: ../goffice/canvas/goc-widget.c:820 ../goffice/utils/go-marker.c:104 +#: ../goffice/canvas/goc-widget.c:826 ../goffice/utils/go-marker.c:104 msgid "x" msgstr "x" @@ -629,7 +658,7 @@ #: ../goffice/canvas/goc-group.c:300 ../goffice/canvas/goc-image.c:294 #: ../goffice/canvas/goc-path.c:300 ../goffice/canvas/goc-pixbuf.c:241 #: ../goffice/canvas/goc-rectangle.c:344 ../goffice/canvas/goc-text.c:474 -#: ../goffice/canvas/goc-widget.c:826 +#: ../goffice/canvas/goc-widget.c:832 msgid "y" msgstr "y" @@ -653,25 +682,6 @@ msgid "The object top position" msgstr "Zgornji položaj predmeta" -#: ../goffice/canvas/goc-component.c:303 ../goffice/canvas/goc-component.c:304 -#: ../goffice/canvas/goc-ellipse.c:297 ../goffice/canvas/goc-graph.c:466 -#: ../goffice/canvas/goc-graph.c:467 ../goffice/canvas/goc-image.c:306 -#: ../goffice/canvas/goc-pixbuf.c:253 ../goffice/canvas/goc-rectangle.c:356 -#: ../goffice/canvas/goc-widget.c:839 ../goffice/graph/gog-graph.c:505 -#: ../goffice/graph/gog-object.c:209 ../goffice/utils/go-image.c:514 -msgid "Height" -msgstr "Višina" - -#: ../goffice/canvas/goc-component.c:309 ../goffice/canvas/goc-component.c:310 -#: ../goffice/canvas/goc-ellipse.c:291 ../goffice/canvas/goc-graph.c:472 -#: ../goffice/canvas/goc-graph.c:473 ../goffice/canvas/goc-image.c:300 -#: ../goffice/canvas/goc-pixbuf.c:247 ../goffice/canvas/goc-rectangle.c:350 -#: ../goffice/canvas/goc-widget.c:833 ../goffice/graph/gog-color-scale.c:340 -#: ../goffice/graph/gog-graph.c:499 ../goffice/graph/gog-object.c:207 -#: ../goffice/utils/go-image.c:510 ../plugins/plot_xy/gog-xy-dropbar.c:308 -msgid "Width" -msgstr "Širina" - #: ../goffice/canvas/goc-component.c:316 msgid "The rotation around center" msgstr "Vrtenje okoli središča" @@ -1059,27 +1069,27 @@ msgid "Wrap width for the text" msgstr "Prelomi širino besedila" -#: ../goffice/canvas/goc-widget.c:814 +#: ../goffice/canvas/goc-widget.c:820 msgid "Widget" msgstr "Gradnik" -#: ../goffice/canvas/goc-widget.c:815 +#: ../goffice/canvas/goc-widget.c:821 msgid "A pointer to the embedded widget" msgstr "Kazalec vstavljenega gradnika" -#: ../goffice/canvas/goc-widget.c:821 +#: ../goffice/canvas/goc-widget.c:827 msgid "The widget left position" msgstr "Levi položaj gradnika" -#: ../goffice/canvas/goc-widget.c:827 +#: ../goffice/canvas/goc-widget.c:833 msgid "The widget top position" msgstr "Zgornji položaj gradnika" -#: ../goffice/canvas/goc-widget.c:834 +#: ../goffice/canvas/goc-widget.c:840 msgid "The widget width" msgstr "Širina gradnika" -#: ../goffice/canvas/goc-widget.c:840 +#: ../goffice/canvas/goc-widget.c:846 msgid "The widget height" msgstr "Višina gradnika" @@ -1891,7 +1901,7 @@ #: ../goffice/graph/gog-color-scale-prefs.ui.h:4 #: ../plugins/plot_distrib/gog-boxplot.c:395 #: ../plugins/plot_distrib/gog-boxplot-prefs.ui.h:9 -#: ../plugins/plot_distrib/gog-histogram.c:372 +#: ../plugins/plot_distrib/gog-histogram.c:373 msgid "Vertical" msgstr "Navpično" @@ -1960,7 +1970,7 @@ #: ../goffice/graph/gog-error-bar-prefs.ui.h:9 #: ../plugins/plot_barcol/gog-1.5d.c:372 #: ../plugins/plot_distrib/gog-boxplot.c:428 -#: ../plugins/plot_distrib/gog-histogram.c:400 +#: ../plugins/plot_distrib/gog-histogram.c:401 #: ../plugins/plot_distrib/gog-probability-plot.c:317 #: ../plugins/plot_pie/gog-pie.c:344 ../plugins/plot_radar/gog-radar.c:324 msgid "Values" @@ -2972,7 +2982,7 @@ #: ../plugins/plot_barcol/gog-line.c:612 #: ../plugins/plot_barcol/gog-minmax.c:195 #: ../plugins/plot_distrib/gog-boxplot.c:172 -#: ../plugins/plot_distrib/gog-histogram.c:343 +#: ../plugins/plot_distrib/gog-histogram.c:344 #: ../plugins/plot_pie/gog-pie.c:279 ../plugins/plot_pie/gog-pie.c:442 #: ../plugins/plot_radar/gog-radar.c:409 ../plugins/plot_radar/gog-radar.c:600 #: ../plugins/plot_surface/gog-xyz.c:103 @@ -7380,7 +7390,7 @@ msgstr "Razpon napake" #: ../plugins/plot_barcol/gog-1.5d.c:661 -#: ../plugins/plot_distrib/gog-histogram.c:1119 +#: ../plugins/plot_distrib/gog-histogram.c:1120 msgid "Drop lines" msgstr "Vretenasti" @@ -7444,7 +7454,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:130 #: ../plugins/plot_barcol/gog-line.c:641 #: ../plugins/plot_distrib/gog-boxplot.c:413 -#: ../plugins/plot_distrib/gog-histogram.c:384 +#: ../plugins/plot_distrib/gog-histogram.c:385 #: ../plugins/plot_radar/gog-radar.c:447 ../plugins/plot_radar/gog-radar.c:522 #: ../plugins/plot_xy/gog-xy.c:398 ../plugins/plot_xy/gog-xy-dropbar.c:296 msgid "Displayed under the grids" @@ -7454,7 +7464,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:131 #: ../plugins/plot_barcol/gog-line.c:642 #: ../plugins/plot_distrib/gog-boxplot.c:414 -#: ../plugins/plot_distrib/gog-histogram.c:385 +#: ../plugins/plot_distrib/gog-histogram.c:386 #: ../plugins/plot_radar/gog-radar.c:448 ../plugins/plot_radar/gog-radar.c:523 #: ../plugins/plot_xy/gog-xy.c:399 ../plugins/plot_xy/gog-xy-dropbar.c:297 msgid "Should the plot be displayed before the grids" @@ -7918,48 +7928,48 @@ msgid "Histogram" msgstr "Diagram - histogram" -#: ../plugins/plot_distrib/gog-histogram.c:373 +#: ../plugins/plot_distrib/gog-histogram.c:374 msgid "Draw the histogram vertically or horizontally" msgstr "Nariši histogram navpično ali vodoravno" -#: ../plugins/plot_distrib/gog-histogram.c:378 +#: ../plugins/plot_distrib/gog-histogram.c:379 msgid "Cumulative" msgstr "Združevalno" -#: ../plugins/plot_distrib/gog-histogram.c:379 +#: ../plugins/plot_distrib/gog-histogram.c:380 msgid "Use cumulated data" msgstr "Uporabi združevanje podatkov" -#: ../plugins/plot_distrib/gog-histogram.c:398 -#: ../plugins/plot_distrib/gog-histogram.c:488 +#: ../plugins/plot_distrib/gog-histogram.c:399 +#: ../plugins/plot_distrib/gog-histogram.c:489 msgid "Limits" msgstr "Omejitve" -#: ../plugins/plot_distrib/gog-histogram.c:447 +#: ../plugins/plot_distrib/gog-histogram.c:448 msgid "" "Label for the first Y category. If not set or empty, \"First values\" will " "be used." msgstr "Naziv prve kategorije Y; prazno polje vsili niz \"Prve vrednosti\"." -#: ../plugins/plot_distrib/gog-histogram.c:452 +#: ../plugins/plot_distrib/gog-histogram.c:453 msgid "" "Label for the second Y category. If not set or empty, \"Second values\" will " "be used." msgstr "Naziv druge kategorije Y; prazno polje vsili niz \"Druge vrednosti\"." -#: ../plugins/plot_distrib/gog-histogram.c:458 +#: ../plugins/plot_distrib/gog-histogram.c:459 msgid "Categories labels" msgstr "Oznake kategorij" -#: ../plugins/plot_distrib/gog-histogram.c:490 -#: ../plugins/plot_distrib/gog-histogram.c:766 +#: ../plugins/plot_distrib/gog-histogram.c:491 +#: ../plugins/plot_distrib/gog-histogram.c:767 msgid "First values" msgstr "Prve vrednosti" -#: ../plugins/plot_distrib/gog-histogram.c:492 -#: ../plugins/plot_distrib/gog-histogram.c:774 -#: ../plugins/plot_distrib/gog-histogram.c:785 -#: ../plugins/plot_distrib/gog-histogram.c:797 +#: ../plugins/plot_distrib/gog-histogram.c:493 +#: ../plugins/plot_distrib/gog-histogram.c:775 +#: ../plugins/plot_distrib/gog-histogram.c:786 +#: ../plugins/plot_distrib/gog-histogram.c:798 msgid "Second values" msgstr "Druge vrednosti" diff -Nru goffice-0.10.56/po/sv.po goffice-0.10.57/po/sv.po --- goffice-0.10.56/po/sv.po 2022-02-12 00:05:06.000000000 +0000 +++ goffice-0.10.57/po/sv.po 2023-11-05 19:32:59.000000000 +0000 @@ -1,12 +1,12 @@ # Swedish messages for Goffice. -# Copyright © 1998-2022 Free Software Foundation, Inc. +# Copyright © 1998-2023 Free Software Foundation, Inc. # Richard Hult , 1999, 2000, 2001. # Andreas Hyden , 2000. # Christian Rose , 2000, 2001, 2002. # Jörgen Tegnér , 2001. # Jan Morén , 2002. # Josef Andersson , 2015, 2016. -# Anders Jonsson , 2015, 2020, 2021, 2022. +# Anders Jonsson , 2015, 2020, 2021, 2022, 2023. # Luna Jernberg , 2021. # # Regler: @@ -24,8 +24,8 @@ msgstr "" "Project-Id-Version: goffice\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/goffice/issues\n" -"POT-Creation-Date: 2021-04-13 11:35+0000\n" -"PO-Revision-Date: 2022-02-07 19:58+0100\n" +"POT-Creation-Date: 2023-10-29 10:42+0000\n" +"PO-Revision-Date: 2023-10-29 14:29+0100\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -33,7 +33,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.4\n" "X-Project-Style: gnome\n" #: ../goffice/app/file.c:177 ../goffice/app/file.c:632 @@ -459,7 +459,7 @@ msgstr "Uppstädningsfunktionen i insticksmodulen returnerade ett fel." #: ../goffice/app/go-plugin-service.c:229 ../goffice/gtk/go-format-sel.c:59 -#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5515 +#: ../goffice/utils/go-format.c:1040 ../goffice/utils/go-format.c:5525 msgid "General" msgstr "Allmän" @@ -623,12 +623,41 @@ msgid "Arrow for line's end" msgstr "Pil för linjens slut" +#: ../goffice/canvas/goc-canvas.c:365 ../goffice/canvas/goc-component.c:309 +#: ../goffice/canvas/goc-component.c:310 ../goffice/canvas/goc-ellipse.c:291 +#: ../goffice/canvas/goc-graph.c:472 ../goffice/canvas/goc-graph.c:473 +#: ../goffice/canvas/goc-image.c:300 ../goffice/canvas/goc-pixbuf.c:247 +#: ../goffice/canvas/goc-rectangle.c:350 ../goffice/canvas/goc-widget.c:839 +#: ../goffice/graph/gog-color-scale.c:340 ../goffice/graph/gog-graph.c:499 +#: ../goffice/graph/gog-object.c:207 ../goffice/utils/go-image.c:510 +#: ../plugins/plot_xy/gog-xy-dropbar.c:308 +msgid "Width" +msgstr "Bredd" + +#: ../goffice/canvas/goc-canvas.c:366 +msgid "The width of the canvas" +msgstr "Ritytans bredd" + +#: ../goffice/canvas/goc-canvas.c:371 ../goffice/canvas/goc-component.c:303 +#: ../goffice/canvas/goc-component.c:304 ../goffice/canvas/goc-ellipse.c:297 +#: ../goffice/canvas/goc-graph.c:466 ../goffice/canvas/goc-graph.c:467 +#: ../goffice/canvas/goc-image.c:306 ../goffice/canvas/goc-pixbuf.c:253 +#: ../goffice/canvas/goc-rectangle.c:356 ../goffice/canvas/goc-widget.c:845 +#: ../goffice/graph/gog-graph.c:505 ../goffice/graph/gog-object.c:209 +#: ../goffice/utils/go-image.c:514 +msgid "Height" +msgstr "Höjd" + +#: ../goffice/canvas/goc-canvas.c:372 +msgid "The height of the canvas" +msgstr "Ritytans höjd" + #: ../goffice/canvas/goc-circle.c:188 ../goffice/canvas/goc-component.c:291 -#: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:441 +#: ../goffice/canvas/goc-ellipse.c:279 ../goffice/canvas/goc-graph.c:454 #: ../goffice/canvas/goc-group.c:294 ../goffice/canvas/goc-image.c:288 #: ../goffice/canvas/goc-path.c:294 ../goffice/canvas/goc-pixbuf.c:235 #: ../goffice/canvas/goc-rectangle.c:338 ../goffice/canvas/goc-text.c:468 -#: ../goffice/canvas/goc-widget.c:820 ../goffice/utils/go-marker.c:104 +#: ../goffice/canvas/goc-widget.c:826 ../goffice/utils/go-marker.c:104 msgid "x" msgstr "x" @@ -637,11 +666,11 @@ msgstr "Cirkelcentrets vågräta position" #: ../goffice/canvas/goc-circle.c:194 ../goffice/canvas/goc-component.c:297 -#: ../goffice/canvas/goc-ellipse.c:285 ../goffice/canvas/goc-graph.c:447 +#: ../goffice/canvas/goc-ellipse.c:285 ../goffice/canvas/goc-graph.c:460 #: ../goffice/canvas/goc-group.c:300 ../goffice/canvas/goc-image.c:294 #: ../goffice/canvas/goc-path.c:300 ../goffice/canvas/goc-pixbuf.c:241 #: ../goffice/canvas/goc-rectangle.c:344 ../goffice/canvas/goc-text.c:474 -#: ../goffice/canvas/goc-widget.c:826 +#: ../goffice/canvas/goc-widget.c:832 msgid "y" msgstr "y" @@ -665,25 +694,6 @@ msgid "The object top position" msgstr "Objektets topposition" -#: ../goffice/canvas/goc-component.c:303 ../goffice/canvas/goc-component.c:304 -#: ../goffice/canvas/goc-ellipse.c:297 ../goffice/canvas/goc-graph.c:453 -#: ../goffice/canvas/goc-graph.c:454 ../goffice/canvas/goc-image.c:306 -#: ../goffice/canvas/goc-pixbuf.c:253 ../goffice/canvas/goc-rectangle.c:356 -#: ../goffice/canvas/goc-widget.c:839 ../goffice/graph/gog-graph.c:505 -#: ../goffice/graph/gog-object.c:206 ../goffice/utils/go-image.c:514 -msgid "Height" -msgstr "Höjd" - -#: ../goffice/canvas/goc-component.c:309 ../goffice/canvas/goc-component.c:310 -#: ../goffice/canvas/goc-ellipse.c:291 ../goffice/canvas/goc-graph.c:459 -#: ../goffice/canvas/goc-graph.c:460 ../goffice/canvas/goc-image.c:300 -#: ../goffice/canvas/goc-pixbuf.c:247 ../goffice/canvas/goc-rectangle.c:350 -#: ../goffice/canvas/goc-widget.c:833 ../goffice/graph/gog-color-scale.c:340 -#: ../goffice/graph/gog-graph.c:499 ../goffice/graph/gog-object.c:204 -#: ../goffice/utils/go-image.c:510 ../plugins/plot_xy/gog-xy-dropbar.c:308 -msgid "Width" -msgstr "Bredd" - #: ../goffice/canvas/goc-component.c:316 msgid "The rotation around center" msgstr "Rotationen kring centrum" @@ -717,36 +727,36 @@ msgstr "Rotationen kring vänster topposition" #. Note to translators: the following is a format string for a pair of coordinates. If your locale uses decimal comma then you should probably translate the comma here to a semi-colon. -#: ../goffice/canvas/goc-graph.c:373 +#: ../goffice/canvas/goc-graph.c:386 #, c-format msgid "(%s,%s)" msgstr "(%s;%s)" -#: ../goffice/canvas/goc-graph.c:442 +#: ../goffice/canvas/goc-graph.c:455 msgid "The graph left position" msgstr "Grafens vänsterposition" -#: ../goffice/canvas/goc-graph.c:448 +#: ../goffice/canvas/goc-graph.c:461 msgid "The graph top position" msgstr "Grafens topposition" #. default #. Cheat and assign a name here, graphs will not have parents until we #. * support graphs in graphs -#: ../goffice/canvas/goc-graph.c:465 ../goffice/graph/gog-graph.c:258 +#: ../goffice/canvas/goc-graph.c:478 ../goffice/graph/gog-graph.c:258 #: ../goffice/graph/gog-graph.c:531 ../goffice/graph/gog-theme.c:581 msgid "Graph" msgstr "Graf" -#: ../goffice/canvas/goc-graph.c:466 +#: ../goffice/canvas/goc-graph.c:479 msgid "The GogGraph this object displays" msgstr "GogGraph som objektet visar" -#: ../goffice/canvas/goc-graph.c:471 ../goffice/graph/gog-graph.c:1075 +#: ../goffice/canvas/goc-graph.c:484 ../goffice/graph/gog-graph.c:1075 msgid "Renderer" msgstr "Renderare" -#: ../goffice/canvas/goc-graph.c:472 +#: ../goffice/canvas/goc-graph.c:485 msgid "The GogRenderer being displayed" msgstr "Den GogRenderer som visas" @@ -810,19 +820,19 @@ msgid "The cropped area at the image top as a fraction of the image height" msgstr "Det beskurna området vid bildens överdel som en bråkdel av bildhöjden" -#: ../goffice/canvas/goc-item.c:275 +#: ../goffice/canvas/goc-item.c:276 msgid "Canvas" msgstr "Rityta" -#: ../goffice/canvas/goc-item.c:276 +#: ../goffice/canvas/goc-item.c:277 msgid "The canvas object on which the item resides" msgstr "Rityteobjektet på vilket objektet är" -#: ../goffice/canvas/goc-item.c:281 ../goffice/graph/gog-view.c:693 +#: ../goffice/canvas/goc-item.c:282 ../goffice/graph/gog-view.c:692 msgid "Parent" msgstr "Överordnad" -#: ../goffice/canvas/goc-item.c:282 +#: ../goffice/canvas/goc-item.c:283 msgid "The group in which the item resides" msgstr "Gruppen där objektet är" @@ -1014,7 +1024,7 @@ msgid "The rotation around the anchor" msgstr "Rotationen kring fästpunkten" -#: ../goffice/canvas/goc-text.c:486 ../goffice/graph/gog-object.c:858 +#: ../goffice/canvas/goc-text.c:486 ../goffice/graph/gog-object.c:861 msgid "Anchor" msgstr "Fästpunkt" @@ -1071,27 +1081,27 @@ msgid "Wrap width for the text" msgstr "Radbrytningsbredd för texten" -#: ../goffice/canvas/goc-widget.c:814 +#: ../goffice/canvas/goc-widget.c:820 msgid "Widget" msgstr "Gränssnittskomponent" -#: ../goffice/canvas/goc-widget.c:815 +#: ../goffice/canvas/goc-widget.c:821 msgid "A pointer to the embedded widget" msgstr "En pekare till den inbäddade komponenten" -#: ../goffice/canvas/goc-widget.c:821 +#: ../goffice/canvas/goc-widget.c:827 msgid "The widget left position" msgstr "Komponentens vänsterposition" -#: ../goffice/canvas/goc-widget.c:827 +#: ../goffice/canvas/goc-widget.c:833 msgid "The widget top position" msgstr "Komponentens topposition" -#: ../goffice/canvas/goc-widget.c:834 +#: ../goffice/canvas/goc-widget.c:840 msgid "The widget width" msgstr "Komponentens bredd" -#: ../goffice/canvas/goc-widget.c:840 +#: ../goffice/canvas/goc-widget.c:846 msgid "The widget height" msgstr "Komponentens höjd" @@ -1359,8 +1369,8 @@ #: ../goffice/graph/gog-axis.c:3484 msgid "" -"The unit symbol for the absolute distance unit between ticks. Might be \"cm" -"\" or \"in\"" +"The unit symbol for the absolute distance unit between ticks. Might be " +"\"cm\" or \"in\"" msgstr "" "Enhetssymbolen för den absoluta avståndsenheten mellan skalstreck. Kan vara " "”cm” eller ”in”" @@ -1403,7 +1413,7 @@ msgstr "Färg" #: ../goffice/graph/gog-axis-color-map-prefs.ui.h:5 -#: ../goffice/graph/gog-guru.c:1032 ../goffice/graph/gog-series.c:593 +#: ../goffice/graph/gog-guru.c:1032 ../goffice/graph/gog-series.c:595 #: ../goffice/graph/gog-theme-editor.ui.h:2 msgid "Name" msgstr "Namn" @@ -1599,8 +1609,8 @@ msgid "_Show Labels" msgstr "_Visa etiketter" -#: ../goffice/graph/gog-axis-prefs.ui.h:13 ../goffice/graph/gog-object.c:790 -#: ../goffice/graph/gog-object.c:834 ../goffice/graph/gog-series-labels.c:899 +#: ../goffice/graph/gog-axis-prefs.ui.h:13 ../goffice/graph/gog-object.c:793 +#: ../goffice/graph/gog-object.c:837 ../goffice/graph/gog-series-labels.c:899 #: ../goffice/graph/gog-series-labels.c:1430 msgid "Position" msgstr "Position" @@ -1830,27 +1840,27 @@ msgid "%s to %s" msgstr "%s till %s" -#: ../goffice/graph/gog-color-scale.c:144 ../goffice/graph/gog-object.c:173 -#: ../goffice/graph/gog-object.c:192 ../goffice/graph/gog-series.c:110 +#: ../goffice/graph/gog-color-scale.c:144 ../goffice/graph/gog-object.c:176 +#: ../goffice/graph/gog-object.c:195 ../goffice/graph/gog-series.c:112 #: ../goffice/graph/gog-series-labels.c:58 msgid "Top" msgstr "Topp" -#: ../goffice/graph/gog-color-scale.c:145 ../goffice/graph/gog-object.c:177 -#: ../goffice/graph/gog-object.c:198 ../goffice/graph/gog-series.c:108 +#: ../goffice/graph/gog-color-scale.c:145 ../goffice/graph/gog-object.c:180 +#: ../goffice/graph/gog-object.c:201 ../goffice/graph/gog-series.c:110 #: ../goffice/graph/gog-series-labels.c:59 msgid "Bottom" msgstr "Botten" -#: ../goffice/graph/gog-color-scale.c:147 ../goffice/graph/gog-object.c:179 -#: ../goffice/graph/gog-object.c:194 ../goffice/graph/gog-series.c:109 +#: ../goffice/graph/gog-color-scale.c:147 ../goffice/graph/gog-object.c:182 +#: ../goffice/graph/gog-object.c:197 ../goffice/graph/gog-series.c:111 #: ../goffice/graph/gog-series-labels.c:60 #: ../goffice/gtk/go-gradient-selector.c:101 msgid "Left" msgstr "Vänster" -#: ../goffice/graph/gog-color-scale.c:148 ../goffice/graph/gog-object.c:175 -#: ../goffice/graph/gog-object.c:196 ../goffice/graph/gog-series.c:111 +#: ../goffice/graph/gog-color-scale.c:148 ../goffice/graph/gog-object.c:178 +#: ../goffice/graph/gog-object.c:199 ../goffice/graph/gog-series.c:113 #: ../goffice/graph/gog-series-labels.c:61 #: ../goffice/gtk/go-gradient-selector.c:103 msgid "Right" @@ -1862,7 +1872,7 @@ #: ../goffice/graph/gog-smoothed-curve.c:60 #: ../goffice/graph/gog-trend-line.c:92 #: ../plugins/plot_distrib/gog-probability-plot.c:75 -#: ../plugins/plot_xy/gog-xy.c:2105 +#: ../plugins/plot_xy/gog-xy.c:2110 msgid "Details" msgstr "Detaljer" @@ -1911,7 +1921,7 @@ #: ../goffice/graph/gog-color-scale-prefs.ui.h:4 #: ../plugins/plot_distrib/gog-boxplot.c:395 #: ../plugins/plot_distrib/gog-boxplot-prefs.ui.h:9 -#: ../plugins/plot_distrib/gog-histogram.c:372 +#: ../plugins/plot_distrib/gog-histogram.c:373 msgid "Vertical" msgstr "Lodrät" @@ -1926,10 +1936,10 @@ #: ../goffice/graph/gog-error-bar.c:79 #: ../goffice/graph/gog-error-bar-prefs.ui.h:11 -#: ../goffice/graph/gog-object.c:203 +#: ../goffice/graph/gog-object.c:206 #: ../goffice/graph/gog-reg-curve-prefs.ui.h:13 -#: ../goffice/gtk/go-arrow-sel.ui.h:5 ../goffice/gtk/go-format-sel.c:1665 -#: ../goffice/gtk/go-format-sel.c:1845 ../goffice/utils/formats.c:370 +#: ../goffice/gtk/go-arrow-sel.ui.h:5 ../goffice/gtk/go-format-sel.c:1671 +#: ../goffice/gtk/go-format-sel.c:1851 ../goffice/utils/formats.c:370 #: ../goffice/utils/go-line.c:127 ../goffice/utils/go-style-prefs.ui.h:10 msgid "None" msgstr "Ingen" @@ -1980,7 +1990,7 @@ #: ../goffice/graph/gog-error-bar-prefs.ui.h:9 #: ../plugins/plot_barcol/gog-1.5d.c:372 #: ../plugins/plot_distrib/gog-boxplot.c:428 -#: ../plugins/plot_distrib/gog-histogram.c:400 +#: ../plugins/plot_distrib/gog-histogram.c:401 #: ../plugins/plot_distrib/gog-probability-plot.c:317 #: ../plugins/plot_pie/gog-pie.c:344 ../plugins/plot_radar/gog-radar.c:324 msgid "Values" @@ -2202,102 +2212,102 @@ msgid "padding between the swatches in pts." msgstr "utfyllnaden mellan färgpunkterna i punkter." -#: ../goffice/graph/gog-object.c:174 ../goffice/graph/gog-object.c:193 +#: ../goffice/graph/gog-object.c:177 ../goffice/graph/gog-object.c:196 msgid "Top right" msgstr "Övre höger" -#: ../goffice/graph/gog-object.c:176 ../goffice/graph/gog-object.c:199 +#: ../goffice/graph/gog-object.c:179 ../goffice/graph/gog-object.c:202 msgid "Bottom right" msgstr "Nedre höger" -#: ../goffice/graph/gog-object.c:178 ../goffice/graph/gog-object.c:197 +#: ../goffice/graph/gog-object.c:181 ../goffice/graph/gog-object.c:200 msgid "Bottom left" msgstr "Nedre vänster" -#: ../goffice/graph/gog-object.c:180 ../goffice/graph/gog-object.c:191 +#: ../goffice/graph/gog-object.c:183 ../goffice/graph/gog-object.c:194 msgid "Top left" msgstr "Övre vänster" -#: ../goffice/graph/gog-object.c:184 ../goffice/utils/go-style-prefs.ui.h:29 +#: ../goffice/graph/gog-object.c:187 ../goffice/utils/go-style-prefs.ui.h:29 msgid "Fill" msgstr "Fyll" -#: ../goffice/graph/gog-object.c:185 ../plugins/plot_barcol/gog-dropbar.c:143 +#: ../goffice/graph/gog-object.c:188 ../plugins/plot_barcol/gog-dropbar.c:143 #: ../plugins/plot_xy/gog-xy-dropbar.c:322 msgid "Start" msgstr "Start" -#: ../goffice/graph/gog-object.c:186 ../plugins/plot_barcol/gog-dropbar.c:145 +#: ../goffice/graph/gog-object.c:189 ../plugins/plot_barcol/gog-dropbar.c:145 #: ../plugins/plot_xy/gog-xy-dropbar.c:324 msgid "End" msgstr "Slut" -#: ../goffice/graph/gog-object.c:187 ../goffice/graph/gog-object.c:195 -#: ../goffice/graph/gog-series.c:113 +#: ../goffice/graph/gog-object.c:190 ../goffice/graph/gog-object.c:198 +#: ../goffice/graph/gog-series.c:115 msgid "Center" msgstr "Mitten" -#: ../goffice/graph/gog-object.c:205 +#: ../goffice/graph/gog-object.c:208 msgid "Absolute width" msgstr "Absolut bredd" -#: ../goffice/graph/gog-object.c:207 +#: ../goffice/graph/gog-object.c:210 msgid "Absolute height" msgstr "Absolut höjd" -#: ../goffice/graph/gog-object.c:208 +#: ../goffice/graph/gog-object.c:211 msgid "Size" msgstr "Storlek" -#: ../goffice/graph/gog-object.c:209 +#: ../goffice/graph/gog-object.c:212 msgid "Absolute size" msgstr "Absolut storlek" -#: ../goffice/graph/gog-object.c:828 +#: ../goffice/graph/gog-object.c:831 msgid "Object ID" msgstr "Objekt-ID" -#: ../goffice/graph/gog-object.c:829 +#: ../goffice/graph/gog-object.c:832 msgid "Object numerical ID" msgstr "Objektnummer-ID" -#: ../goffice/graph/gog-object.c:835 +#: ../goffice/graph/gog-object.c:838 msgid "Position and size of object, in percentage of parent size" msgstr "Position och storlek på ett objekt i procent av föräldrastorlek" -#: ../goffice/graph/gog-object.c:840 +#: ../goffice/graph/gog-object.c:843 msgid "Compass" msgstr "Kompass" -#: ../goffice/graph/gog-object.c:841 +#: ../goffice/graph/gog-object.c:844 msgid "Compass auto position flags" msgstr "Kompass autopositionsflaggor" -#: ../goffice/graph/gog-object.c:846 +#: ../goffice/graph/gog-object.c:849 msgid "Alignment" msgstr "Justering" -#: ../goffice/graph/gog-object.c:847 +#: ../goffice/graph/gog-object.c:850 msgid "Alignment flag" msgstr "Justeringsflagga" -#: ../goffice/graph/gog-object.c:852 ../goffice/graph/gog-object.c:853 +#: ../goffice/graph/gog-object.c:855 ../goffice/graph/gog-object.c:856 msgid "Is position manual" msgstr "Är position manuell" -#: ../goffice/graph/gog-object.c:859 +#: ../goffice/graph/gog-object.c:862 msgid "Anchor for manual position" msgstr "Fästpunkt för manuell position" -#: ../goffice/graph/gog-object.c:864 ../goffice/graph/gog-object.c:865 +#: ../goffice/graph/gog-object.c:867 ../goffice/graph/gog-object.c:868 msgid "Should the object be hidden" msgstr "Ska objektet vara dolt" -#: ../goffice/graph/gog-object.c:870 +#: ../goffice/graph/gog-object.c:873 msgid "Manual size" msgstr "Manuell storlek" -#: ../goffice/graph/gog-object.c:871 +#: ../goffice/graph/gog-object.c:874 msgid "Whether the height or width are manually set" msgstr "Huruvida höjden eller bredden är manuellt angivna" @@ -2393,132 +2403,132 @@ msgid "Number of pts separating charts in the grid" msgstr "Antal punkter som separerar diagram i rutnätet" -#: ../goffice/graph/gog-plot.c:229 +#: ../goffice/graph/gog-plot.c:230 msgid "X axis:" msgstr "X-axel:" -#: ../goffice/graph/gog-plot.c:230 +#: ../goffice/graph/gog-plot.c:231 msgid "Y axis:" msgstr "Y-axel:" -#: ../goffice/graph/gog-plot.c:231 +#: ../goffice/graph/gog-plot.c:232 msgid "Z axis:" msgstr "Z-axel:" -#: ../goffice/graph/gog-plot.c:232 +#: ../goffice/graph/gog-plot.c:233 msgid "Circular axis:" msgstr "Cirkulär axel:" -#: ../goffice/graph/gog-plot.c:233 +#: ../goffice/graph/gog-plot.c:234 msgid "Radial axis:" msgstr "Radiell axel:" -#: ../goffice/graph/gog-plot.c:234 +#: ../goffice/graph/gog-plot.c:235 msgid "Pseudo 3D axis:" msgstr "Pseudo-3d-axel:" -#: ../goffice/graph/gog-plot.c:235 +#: ../goffice/graph/gog-plot.c:236 msgid "Color axis:" msgstr "Cirkulär axel:" -#: ../goffice/graph/gog-plot.c:236 +#: ../goffice/graph/gog-plot.c:237 msgid "Bubble axis:" msgstr "Bubbelaxel:" -#: ../goffice/graph/gog-plot.c:302 +#: ../goffice/graph/gog-plot.c:303 msgid "Axes" msgstr "Axlar" -#: ../goffice/graph/gog-plot.c:438 ../goffice/graph/gog-theme.c:598 +#: ../goffice/graph/gog-plot.c:439 ../goffice/graph/gog-theme.c:598 #: ../goffice/graph/gog-theme-editor.ui.h:4 msgid "Series" msgstr "Serier" -#: ../goffice/graph/gog-plot.c:459 +#: ../goffice/graph/gog-plot.c:460 msgid "Vary style by element" msgstr "Variera stil efter element" -#: ../goffice/graph/gog-plot.c:460 +#: ../goffice/graph/gog-plot.c:461 msgid "Use a different style for each segment" msgstr "Använd en annan stil för varje segment" -#: ../goffice/graph/gog-plot.c:465 +#: ../goffice/graph/gog-plot.c:466 msgid "X axis" msgstr "X-axel" -#: ../goffice/graph/gog-plot.c:466 +#: ../goffice/graph/gog-plot.c:467 msgid "Reference to X axis" msgstr "Referens till X-axeln" -#: ../goffice/graph/gog-plot.c:471 +#: ../goffice/graph/gog-plot.c:472 msgid "Y axis" msgstr "Y-axel" -#: ../goffice/graph/gog-plot.c:472 +#: ../goffice/graph/gog-plot.c:473 msgid "Reference to Y axis" msgstr "Referens till Y-axeln" -#: ../goffice/graph/gog-plot.c:477 +#: ../goffice/graph/gog-plot.c:478 msgid "Z axis" msgstr "Z-axel" -#: ../goffice/graph/gog-plot.c:478 +#: ../goffice/graph/gog-plot.c:479 msgid "Reference to Z axis" msgstr "Referens till Z-axel" -#: ../goffice/graph/gog-plot.c:483 +#: ../goffice/graph/gog-plot.c:484 msgid "Circular axis" msgstr "Cirkulär axel" -#: ../goffice/graph/gog-plot.c:484 +#: ../goffice/graph/gog-plot.c:485 msgid "Reference to circular axis" msgstr "Referens till cirkulär axel" -#: ../goffice/graph/gog-plot.c:489 +#: ../goffice/graph/gog-plot.c:490 msgid "Radial axis" msgstr "Radiell axel" -#: ../goffice/graph/gog-plot.c:490 +#: ../goffice/graph/gog-plot.c:491 msgid "Reference to radial axis" msgstr "Referens till radiell axel" -#: ../goffice/graph/gog-plot.c:495 +#: ../goffice/graph/gog-plot.c:496 msgid "Pseudo-3D axis" msgstr "Pseudo-3d-axel" -#: ../goffice/graph/gog-plot.c:496 +#: ../goffice/graph/gog-plot.c:497 msgid "Reference to pseudo-3D axis" msgstr "Referens till pseudo-3d-axel" -#: ../goffice/graph/gog-plot.c:501 +#: ../goffice/graph/gog-plot.c:502 msgid "Color axis" msgstr "Färgaxel" -#: ../goffice/graph/gog-plot.c:502 +#: ../goffice/graph/gog-plot.c:503 msgid "Reference to color axis" msgstr "Referens till färgaxel" -#: ../goffice/graph/gog-plot.c:507 +#: ../goffice/graph/gog-plot.c:508 msgid "Bubble axis" msgstr "Bubbelaxel" -#: ../goffice/graph/gog-plot.c:508 +#: ../goffice/graph/gog-plot.c:509 msgid "Reference to bubble axis" msgstr "Referens till bubbelaxel" -#: ../goffice/graph/gog-plot.c:513 +#: ../goffice/graph/gog-plot.c:514 msgid "Plot group" msgstr "Diagramgrupp" -#: ../goffice/graph/gog-plot.c:514 +#: ../goffice/graph/gog-plot.c:515 msgid "Name of plot group if any" msgstr "Namn på diagramgrupp om någon" -#: ../goffice/graph/gog-plot.c:519 +#: ../goffice/graph/gog-plot.c:520 msgid "Guru hints" msgstr "Gurutips" -#: ../goffice/graph/gog-plot.c:520 +#: ../goffice/graph/gog-plot.c:521 msgid "" "Semicolon separated list of hints for automatic addition of objects in guru " "dialog" @@ -2526,19 +2536,19 @@ "Semikolonseparerad lista över tips för automatiska tillägg av objekt i " "gurudialogen" -#: ../goffice/graph/gog-plot.c:526 +#: ../goffice/graph/gog-plot.c:527 msgid "Default interpolation" msgstr "Standardinterpolation" -#: ../goffice/graph/gog-plot.c:527 +#: ../goffice/graph/gog-plot.c:528 msgid "Default type of series line interpolation" msgstr "Standardtyp av linjeinterpolation" -#: ../goffice/graph/gog-plot.c:1175 +#: ../goffice/graph/gog-plot.c:1176 msgid "Move plot area" msgstr "Flytta rityta" -#: ../goffice/graph/gog-plot.c:1227 +#: ../goffice/graph/gog-plot.c:1228 msgid "Resize plot area" msgstr "Byt storlek på rityta" @@ -2653,140 +2663,140 @@ msgid "Display _regression coefficient R²" msgstr "Visa _regressionskoefficient R²" -#: ../goffice/graph/gog-renderer.c:1874 ../goffice/graph/gog-view.c:699 +#: ../goffice/graph/gog-renderer.c:1897 ../goffice/graph/gog-view.c:698 msgid "Model" msgstr "Modell" -#: ../goffice/graph/gog-renderer.c:1875 +#: ../goffice/graph/gog-renderer.c:1898 msgid "The GogGraph this renderer displays" msgstr "Den GogGraph denna renderare visar" -#: ../goffice/graph/gog-renderer.c:1880 +#: ../goffice/graph/gog-renderer.c:1903 msgid "View" msgstr "Vy" -#: ../goffice/graph/gog-renderer.c:1881 +#: ../goffice/graph/gog-renderer.c:1904 msgid "the GogView this renderer is displaying" msgstr "den GogView denna renderare visar" -#: ../goffice/graph/gog-series.c:106 +#: ../goffice/graph/gog-series.c:108 msgid "Y origin" msgstr "Y-ursprung" -#: ../goffice/graph/gog-series.c:107 +#: ../goffice/graph/gog-series.c:109 msgid "X origin" msgstr "X-ursprung" -#: ../goffice/graph/gog-series.c:112 +#: ../goffice/graph/gog-series.c:114 msgid "Origin" msgstr "Ursprung" -#: ../goffice/graph/gog-series.c:114 +#: ../goffice/graph/gog-series.c:116 msgid "Edge" msgstr "Kant" -#: ../goffice/graph/gog-series.c:115 +#: ../goffice/graph/gog-series.c:117 msgid "Self" msgstr "Själv" -#: ../goffice/graph/gog-series.c:116 +#: ../goffice/graph/gog-series.c:118 msgid "Next series" msgstr "Nästa serier" -#: ../goffice/graph/gog-series.c:117 +#: ../goffice/graph/gog-series.c:119 msgid "X axis minimum" msgstr "X-axelminimum" -#: ../goffice/graph/gog-series.c:118 +#: ../goffice/graph/gog-series.c:120 msgid "X axis maximum" msgstr "X-axelmaximum" -#: ../goffice/graph/gog-series.c:119 +#: ../goffice/graph/gog-series.c:121 msgid "Y axis minimum" msgstr "Y-axelminimum" -#: ../goffice/graph/gog-series.c:120 +#: ../goffice/graph/gog-series.c:122 msgid "Y axis maximum" msgstr "Y-axelmaximum" -#: ../goffice/graph/gog-series.c:233 ../goffice/graph/gog-series-labels.c:414 +#: ../goffice/graph/gog-series.c:235 ../goffice/graph/gog-series-labels.c:414 msgid "Index:" msgstr "Index:" -#: ../goffice/graph/gog-series.c:246 ../plugins/plot_pie/gog-pie.c:91 +#: ../goffice/graph/gog-series.c:248 ../plugins/plot_pie/gog-pie.c:91 msgid "Settings" msgstr "Inställningar" -#: ../goffice/graph/gog-series.c:287 ../goffice/graph/gog-series-labels.c:917 +#: ../goffice/graph/gog-series.c:289 ../goffice/graph/gog-series-labels.c:917 msgid "Index" msgstr "Index" -#: ../goffice/graph/gog-series.c:288 ../goffice/graph/gog-series-labels.c:918 +#: ../goffice/graph/gog-series.c:290 ../goffice/graph/gog-series-labels.c:918 msgid "Index of the corresponding data element" msgstr "Index över det motsvarande dataelementet" -#: ../goffice/graph/gog-series.c:624 ../goffice/graph/gog-trend-line.c:99 +#: ../goffice/graph/gog-series.c:626 ../goffice/graph/gog-trend-line.c:99 msgid "_Show in Legend" msgstr "_Visa i förklaring" -#: ../goffice/graph/gog-series.c:634 +#: ../goffice/graph/gog-series.c:636 msgid "Data" msgstr "Data" # Hittar ingen bra översättning av clamped, kom gärna med förslag -#: ../goffice/graph/gog-series.c:696 +#: ../goffice/graph/gog-series.c:698 msgid "Derivative at first point of the clamped cubic spline." msgstr "Derivata av första punkten av clamped kubisk spline." -#: ../goffice/graph/gog-series.c:701 +#: ../goffice/graph/gog-series.c:703 msgid "Derivative at last point of the clamped cubic spline." msgstr "Derivata av sista punkten av clamped kubisk spline." -#: ../goffice/graph/gog-series.c:774 ../goffice/graph/gog-series-labels.c:1407 +#: ../goffice/graph/gog-series.c:776 ../goffice/graph/gog-series-labels.c:1407 msgid "Point" msgstr "Punkt" -#: ../goffice/graph/gog-series.c:780 +#: ../goffice/graph/gog-series.c:782 msgid "Regression curve" msgstr "Regressionskurva" -#: ../goffice/graph/gog-series.c:788 ../goffice/graph/gog-theme.c:592 +#: ../goffice/graph/gog-series.c:790 ../goffice/graph/gog-theme.c:592 msgid "Trend line" msgstr "Trendlinje" -#: ../goffice/graph/gog-series.c:796 +#: ../goffice/graph/gog-series.c:798 msgid "Data labels" msgstr "Dataetiketter" -#: ../goffice/graph/gog-series.c:831 ../goffice/graph/gog-trend-line.c:151 +#: ../goffice/graph/gog-series.c:833 ../goffice/graph/gog-trend-line.c:151 msgid "Has-legend" msgstr "Har-förklaring" -#: ../goffice/graph/gog-series.c:832 +#: ../goffice/graph/gog-series.c:834 msgid "Should the series show up in legends" msgstr "Ska serierna visas i förklaringar" -#: ../goffice/graph/gog-series.c:837 ../goffice/graph/gog-series-prefs.ui.h:2 +#: ../goffice/graph/gog-series.c:839 ../goffice/graph/gog-series-prefs.ui.h:2 msgid "Interpolation" msgstr "Interpolation" -#: ../goffice/graph/gog-series.c:838 +#: ../goffice/graph/gog-series.c:840 msgid "Type of line interpolation" msgstr "Typ av linjeinterpolation" -#: ../goffice/graph/gog-series.c:843 +#: ../goffice/graph/gog-series.c:845 msgid "Interpolation skip invalid" msgstr "Hoppa över ogiltiga interpolationer" -#: ../goffice/graph/gog-series.c:844 +#: ../goffice/graph/gog-series.c:846 msgid "Should the series interpolation ignore the invalid data" msgstr "Ska serieinterpolationen ignorera ogiltig data" -#: ../goffice/graph/gog-series.c:849 +#: ../goffice/graph/gog-series.c:851 msgid "Fill type" msgstr "Fyllningstyp" -#: ../goffice/graph/gog-series.c:850 +#: ../goffice/graph/gog-series.c:852 msgid "How to fill the area" msgstr "Hur området fylls" @@ -2991,7 +3001,7 @@ #: ../plugins/plot_barcol/gog-line.c:612 #: ../plugins/plot_barcol/gog-minmax.c:195 #: ../plugins/plot_distrib/gog-boxplot.c:172 -#: ../plugins/plot_distrib/gog-histogram.c:343 +#: ../plugins/plot_distrib/gog-histogram.c:344 #: ../plugins/plot_pie/gog-pie.c:279 ../plugins/plot_pie/gog-pie.c:442 #: ../plugins/plot_radar/gog-radar.c:409 ../plugins/plot_radar/gog-radar.c:600 #: ../plugins/plot_surface/gog-xyz.c:103 @@ -3011,23 +3021,23 @@ msgid "Should the trend line show up in legends" msgstr "Ska trendlinjen visas i förklaringar" -#: ../goffice/graph/gog-view.c:129 +#: ../goffice/graph/gog-view.c:127 msgid "Select object" msgstr "Välj objekt" -#: ../goffice/graph/gog-view.c:200 +#: ../goffice/graph/gog-view.c:198 msgid "Move" msgstr "Flytta" -#: ../goffice/graph/gog-view.c:247 +#: ../goffice/graph/gog-view.c:245 msgid "Resize object" msgstr "Storleksändra objekt" -#: ../goffice/graph/gog-view.c:694 +#: ../goffice/graph/gog-view.c:693 msgid "the GogView parent" msgstr "GogView-föräldern" -#: ../goffice/graph/gog-view.c:700 +#: ../goffice/graph/gog-view.c:699 msgid "The GogObject this view displays" msgstr "Det GogObject denna vy visar" @@ -3035,11 +3045,11 @@ msgid "Series number" msgstr "Serienummer" -#: ../goffice/gtk/go-action-combo-text.c:224 +#: ../goffice/gtk/go-action-combo-text.c:228 msgid "Case Sensitive" msgstr "Skiftlägeskänslig" -#: ../goffice/gtk/go-action-combo-text.c:225 +#: ../goffice/gtk/go-action-combo-text.c:229 msgid "Should the text comparison be case sensitive" msgstr "Ska textjämförelsen vara skiftlägeskänslig" @@ -4331,164 +4341,164 @@ msgstr "Anpassad" #. See http://en.wikipedia.org/wiki/Ampere -#: ../goffice/gtk/go-format-sel.c:309 +#: ../goffice/gtk/go-format-sel.c:311 msgid "A (ampere)" msgstr "A (ampere)" #. See http://en.wikipedia.org/wiki/Becquerel -#: ../goffice/gtk/go-format-sel.c:311 +#: ../goffice/gtk/go-format-sel.c:313 msgid "Bq (becquerel)" msgstr "Bq (becquerel)" #. See http://en.wikipedia.org/wiki/Candela -#: ../goffice/gtk/go-format-sel.c:313 +#: ../goffice/gtk/go-format-sel.c:315 msgid "cd (candela)" msgstr "cd (candela)" #. See http://en.wikipedia.org/wiki/Coulomb -#: ../goffice/gtk/go-format-sel.c:315 +#: ../goffice/gtk/go-format-sel.c:317 msgid "C (coulomb)" msgstr "C (coulomb)" #. See http://en.wikipedia.org/wiki/Degree_Celsius -#: ../goffice/gtk/go-format-sel.c:317 +#: ../goffice/gtk/go-format-sel.c:319 msgid "°C (degree Celsius)" msgstr "°C (grad Celsius)" #. See http://en.wikipedia.org/wiki/Farad -#: ../goffice/gtk/go-format-sel.c:319 +#: ../goffice/gtk/go-format-sel.c:321 msgid "F (farad)" msgstr "F (farad)" #. See http://en.wikipedia.org/wiki/Gray_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:321 +#: ../goffice/gtk/go-format-sel.c:323 msgid "Gy (gray)" msgstr "Gy (gray)" #. See http://en.wikipedia.org/wiki/Henry_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:323 +#: ../goffice/gtk/go-format-sel.c:325 msgid "H (henry)" msgstr "H (henry)" #. See http://en.wikipedia.org/wiki/Hertz -#: ../goffice/gtk/go-format-sel.c:325 +#: ../goffice/gtk/go-format-sel.c:327 msgid "Hz (hertz)" msgstr "Hz (hertz)" #. See http://en.wikipedia.org/wiki/Joule -#: ../goffice/gtk/go-format-sel.c:327 +#: ../goffice/gtk/go-format-sel.c:329 msgid "J (joule)" msgstr "J (joule)" #. See http://en.wikipedia.org/wiki/Kelvin -#: ../goffice/gtk/go-format-sel.c:329 +#: ../goffice/gtk/go-format-sel.c:331 msgid "K (kelvin)" msgstr "K (kelvin)" #. See http://en.wikipedia.org/wiki/Kilogram -#: ../goffice/gtk/go-format-sel.c:331 +#: ../goffice/gtk/go-format-sel.c:333 msgid "kg (kilogram)" msgstr "kg (kilogram)" #. See http://en.wikipedia.org/wiki/Lumen_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:333 +#: ../goffice/gtk/go-format-sel.c:335 msgid "lm (lumen)" msgstr "lm (lumen)" #. See http://en.wikipedia.org/wiki/Lux -#: ../goffice/gtk/go-format-sel.c:335 +#: ../goffice/gtk/go-format-sel.c:337 msgid "lx (lux)" msgstr "lx (lux)" #. See http://en.wikipedia.org/wiki/Metre -#: ../goffice/gtk/go-format-sel.c:337 +#: ../goffice/gtk/go-format-sel.c:339 msgid "m (meter)" msgstr "m (meter)" #. See http://en.wikipedia.org/wiki/Mole_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:339 +#: ../goffice/gtk/go-format-sel.c:341 msgid "mol (mole)" msgstr "mol (mole)" #. See http://en.wikipedia.org/wiki/Newton_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:341 +#: ../goffice/gtk/go-format-sel.c:343 msgid "N (newton)" msgstr "N (newton)" #. See http://en.wikipedia.org/wiki/Ohm_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:343 +#: ../goffice/gtk/go-format-sel.c:345 msgid "Ω (ohm)" msgstr "Ω (ohm)" #. See http://en.wikipedia.org/wiki/Pascal_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:345 +#: ../goffice/gtk/go-format-sel.c:347 msgid "Pa (pascal)" msgstr "Pa (pascal)" #. See http://en.wikipedia.org/wiki/Radian -#: ../goffice/gtk/go-format-sel.c:347 +#: ../goffice/gtk/go-format-sel.c:349 msgid "rad (radian)" msgstr "rad (radian)" #. See http://en.wikipedia.org/wiki/Second -#: ../goffice/gtk/go-format-sel.c:349 +#: ../goffice/gtk/go-format-sel.c:351 msgid "s (second)" msgstr "s (second)" #. See http://en.wikipedia.org/wiki/Siemens_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:351 +#: ../goffice/gtk/go-format-sel.c:353 msgid "S (siemens)" msgstr "S (siemens)" #. See http://en.wikipedia.org/wiki/Steradian -#: ../goffice/gtk/go-format-sel.c:353 +#: ../goffice/gtk/go-format-sel.c:355 msgid "sr (steradian)" msgstr "sr (steradian)" #. See http://en.wikipedia.org/wiki/Sievert -#: ../goffice/gtk/go-format-sel.c:355 +#: ../goffice/gtk/go-format-sel.c:357 msgid "Sv (sievert)" msgstr "Sv (sievert)" #. See http://en.wikipedia.org/wiki/Tesla_%28unit%29 -#: ../goffice/gtk/go-format-sel.c:357 +#: ../goffice/gtk/go-format-sel.c:359 msgid "T (tesla)" msgstr "T (tesla)" #. See http://en.wikipedia.org/wiki/Katal -#: ../goffice/gtk/go-format-sel.c:359 +#: ../goffice/gtk/go-format-sel.c:361 msgid "kat (katal)" msgstr "kat (katal)" #. See http://en.wikipedia.org/wiki/Volt -#: ../goffice/gtk/go-format-sel.c:361 +#: ../goffice/gtk/go-format-sel.c:363 msgid "V (volt)" msgstr "V (volt)" #. See http://en.wikipedia.org/wiki/Watt -#: ../goffice/gtk/go-format-sel.c:363 +#: ../goffice/gtk/go-format-sel.c:365 msgid "W (watt)" msgstr "W (watt)" #. See http://en.wikipedia.org/wiki/Weber_%28Wb%29 -#: ../goffice/gtk/go-format-sel.c:365 +#: ../goffice/gtk/go-format-sel.c:367 msgid "Wb (weber)" msgstr "Wb (weber)" -#: ../goffice/gtk/go-format-sel.c:1030 ../goffice/gtk/go-format-sel.ui.h:41 +#: ../goffice/gtk/go-format-sel.c:1032 ../goffice/gtk/go-format-sel.ui.h:41 msgid "Append no further unit." msgstr "Lägg inte till någon mer enhet." -#: ../goffice/gtk/go-format-sel.c:1037 +#: ../goffice/gtk/go-format-sel.c:1039 #, c-format msgid "Append '%s'." msgstr "Lägg till ”%s”." -#: ../goffice/gtk/go-format-sel.c:1573 +#: ../goffice/gtk/go-format-sel.c:1579 msgid "Negative Number Format" msgstr "Format för negativa tal" -#: ../goffice/gtk/go-format-sel.c:1633 +#: ../goffice/gtk/go-format-sel.c:1639 msgid "Number Formats" msgstr "Talformat" @@ -5889,7 +5899,7 @@ msgid "Semi-circles" msgstr "Halvcirklar" -#: ../goffice/gtk/go-pattern-selector.c:87 ../goffice/utils/go-pattern.c:212 +#: ../goffice/gtk/go-pattern-selector.c:87 ../goffice/utils/go-pattern.c:211 msgid "Thatch" msgstr "Halmtak" @@ -5897,7 +5907,7 @@ msgid "Large circles" msgstr "Stora cirklar" -#: ../goffice/gtk/go-pattern-selector.c:89 ../goffice/utils/go-pattern.c:224 +#: ../goffice/gtk/go-pattern-selector.c:89 ../goffice/utils/go-pattern.c:223 msgid "Bricks" msgstr "Tegelstenar" @@ -6646,17 +6656,17 @@ msgid "Zimbabwe, Zimbabwe Dollars" msgstr "Zimbabwe, dollar" -#: ../goffice/utils/go-emf.c:234 +#: ../goffice/utils/go-emf.c:233 #, c-format msgid "Could not load the image data\n" msgstr "Kunde inte läsa in bilddata\n" -#: ../goffice/utils/go-emf.c:273 +#: ../goffice/utils/go-emf.c:272 #, c-format msgid "Could not input the image data\n" msgstr "Kunde inte mata in bilddata\n" -#: ../goffice/utils/go-emf.c:4918 ../goffice/utils/go-emf.c:4924 +#: ../goffice/utils/go-emf.c:4916 ../goffice/utils/go-emf.c:4922 #, c-format msgid "Invalid image data\n" msgstr "Ogiltig bilddata\n" @@ -6759,20 +6769,20 @@ msgid "left" msgstr "vänster" -#: ../goffice/utils/go-glib-extras.c:919 +#: ../goffice/utils/go-glib-extras.c:960 msgid "yes" msgstr "ja" -#: ../goffice/utils/go-glib-extras.c:925 +#: ../goffice/utils/go-glib-extras.c:966 msgid "no" msgstr "nej" -#: ../goffice/utils/go-glib-extras.c:1144 +#: ../goffice/utils/go-glib-extras.c:1185 #, c-format msgid "Quoted string not terminated" msgstr "Citerad sträng inte avslutad" -#: ../goffice/utils/go-glib-extras.c:1151 +#: ../goffice/utils/go-glib-extras.c:1192 #, c-format msgid "Syntax error" msgstr "Syntaxfel" @@ -6817,7 +6827,7 @@ msgid "Image height in pixels" msgstr "Bildhöjd i bildpunkter" -#: ../goffice/utils/go-line.c:129 ../goffice/utils/go-pattern.c:82 +#: ../goffice/utils/go-line.c:129 ../goffice/utils/go-pattern.c:81 msgid "Solid" msgstr "Helfylld" @@ -6961,92 +6971,92 @@ msgid "left half bar" msgstr "vänster halvstolpe" -#: ../goffice/utils/go-pattern.c:89 +#: ../goffice/utils/go-pattern.c:88 #, no-c-format msgid "75% Grey" msgstr "75% grå" -#: ../goffice/utils/go-pattern.c:96 +#: ../goffice/utils/go-pattern.c:95 #, no-c-format msgid "50% Grey" msgstr "50% grå" -#: ../goffice/utils/go-pattern.c:103 +#: ../goffice/utils/go-pattern.c:102 #, no-c-format msgid "25% Grey" msgstr "25% grå" -#: ../goffice/utils/go-pattern.c:110 +#: ../goffice/utils/go-pattern.c:109 #, no-c-format msgid "12.5% Grey" msgstr "12,5% grå" -#: ../goffice/utils/go-pattern.c:117 +#: ../goffice/utils/go-pattern.c:116 #, no-c-format msgid "6.25% Grey" msgstr "6,25% grå" -#: ../goffice/utils/go-pattern.c:123 +#: ../goffice/utils/go-pattern.c:122 msgid "Horizontal Stripe" msgstr "Vågräta ränder" -#: ../goffice/utils/go-pattern.c:129 +#: ../goffice/utils/go-pattern.c:128 msgid "Vertical Stripe" msgstr "Lodräta ränder" -#: ../goffice/utils/go-pattern.c:135 +#: ../goffice/utils/go-pattern.c:134 msgid "Reverse Diagonal Stripe" msgstr "Omvända diagonala ränder" -#: ../goffice/utils/go-pattern.c:141 +#: ../goffice/utils/go-pattern.c:140 msgid "Diagonal Stripe" msgstr "Diagonala ränder" -#: ../goffice/utils/go-pattern.c:147 +#: ../goffice/utils/go-pattern.c:146 msgid "Diagonal Crosshatch" msgstr "Diagonala korsstreck" -#: ../goffice/utils/go-pattern.c:153 +#: ../goffice/utils/go-pattern.c:152 msgid "Thick Diagonal Crosshatch" msgstr "Tjocka diagonala korsstreck" -#: ../goffice/utils/go-pattern.c:159 +#: ../goffice/utils/go-pattern.c:158 msgid "Thin Horizontal Stripe" msgstr "Tunna vågräta ränder" -#: ../goffice/utils/go-pattern.c:165 +#: ../goffice/utils/go-pattern.c:164 msgid "Thin Vertical Stripe" msgstr "Tunna lodräta ränder" -#: ../goffice/utils/go-pattern.c:171 +#: ../goffice/utils/go-pattern.c:170 msgid "Thin Reverse Diagonal Stripe" msgstr "Tunna omvända diagonala ränder" -#: ../goffice/utils/go-pattern.c:177 +#: ../goffice/utils/go-pattern.c:176 msgid "Thin Diagonal Stripe" msgstr "Tunna diagonala ränder" -#: ../goffice/utils/go-pattern.c:183 +#: ../goffice/utils/go-pattern.c:182 msgid "Thin Horizontal Crosshatch" msgstr "Tunna vågräta korsstreck" -#: ../goffice/utils/go-pattern.c:189 +#: ../goffice/utils/go-pattern.c:188 msgid "Thin Diagonal Crosshatch" msgstr "Tunna diagonala korsstreck" -#: ../goffice/utils/go-pattern.c:195 +#: ../goffice/utils/go-pattern.c:194 msgid "Foreground Solid" msgstr "Solid förgrund" -#: ../goffice/utils/go-pattern.c:201 +#: ../goffice/utils/go-pattern.c:200 msgid "Small Circles" msgstr "Små cirklar" -#: ../goffice/utils/go-pattern.c:206 +#: ../goffice/utils/go-pattern.c:205 msgid "Semi Circles" msgstr "Halvcirklar" -#: ../goffice/utils/go-pattern.c:218 +#: ../goffice/utils/go-pattern.c:217 msgid "Large Circles" msgstr "Stora cirklar" @@ -7374,7 +7384,7 @@ msgstr "Felstaplar" #: ../plugins/plot_barcol/gog-1.5d.c:661 -#: ../plugins/plot_distrib/gog-histogram.c:1119 +#: ../plugins/plot_distrib/gog-histogram.c:1120 msgid "Drop lines" msgstr "Ta bort linjer" @@ -7384,8 +7394,8 @@ msgstr "Linjer" #: ../plugins/plot_barcol/gog-1.5d.c:698 ../plugins/plot_radar/gog-radar.c:1354 -#: ../plugins/plot_radar/gog-radar.c:1480 ../plugins/plot_xy/gog-xy.c:2182 -#: ../plugins/plot_xy/gog-xy.c:2188 +#: ../plugins/plot_radar/gog-radar.c:1480 ../plugins/plot_xy/gog-xy.c:2187 +#: ../plugins/plot_xy/gog-xy.c:2193 msgid "GogErrorBar *" msgstr "GogErrorBar *" @@ -7438,7 +7448,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:130 #: ../plugins/plot_barcol/gog-line.c:641 #: ../plugins/plot_distrib/gog-boxplot.c:413 -#: ../plugins/plot_distrib/gog-histogram.c:384 +#: ../plugins/plot_distrib/gog-histogram.c:385 #: ../plugins/plot_radar/gog-radar.c:447 ../plugins/plot_radar/gog-radar.c:522 #: ../plugins/plot_xy/gog-xy.c:398 ../plugins/plot_xy/gog-xy-dropbar.c:296 msgid "Displayed under the grids" @@ -7448,7 +7458,7 @@ #: ../plugins/plot_barcol/gog-dropbar.c:131 #: ../plugins/plot_barcol/gog-line.c:642 #: ../plugins/plot_distrib/gog-boxplot.c:414 -#: ../plugins/plot_distrib/gog-histogram.c:385 +#: ../plugins/plot_distrib/gog-histogram.c:386 #: ../plugins/plot_radar/gog-radar.c:448 ../plugins/plot_radar/gog-radar.c:523 #: ../plugins/plot_xy/gog-xy.c:399 ../plugins/plot_xy/gog-xy-dropbar.c:297 msgid "Should the plot be displayed before the grids" @@ -7471,11 +7481,11 @@ msgid "PlotDropBar" msgstr "DiagramStap" -#: ../plugins/plot_barcol/gog-line.c:342 ../plugins/plot_xy/gog-xy.c:2199 +#: ../plugins/plot_barcol/gog-line.c:342 ../plugins/plot_xy/gog-xy.c:2204 msgid "Clamp at start" msgstr "Klämma vid start" -#: ../plugins/plot_barcol/gog-line.c:343 ../plugins/plot_xy/gog-xy.c:2200 +#: ../plugins/plot_barcol/gog-line.c:343 ../plugins/plot_xy/gog-xy.c:2205 msgid "" "Slope at start of the interpolated curve when using clamped spline " "interpolation" @@ -7483,11 +7493,11 @@ "Lutning vid början av den interpolerade kurvan vid användning av clamped " "spline interpolation" -#: ../plugins/plot_barcol/gog-line.c:348 ../plugins/plot_xy/gog-xy.c:2205 +#: ../plugins/plot_barcol/gog-line.c:348 ../plugins/plot_xy/gog-xy.c:2210 msgid "Clamp at end" msgstr "Klämma vid slutet" -#: ../plugins/plot_barcol/gog-line.c:349 ../plugins/plot_xy/gog-xy.c:2206 +#: ../plugins/plot_barcol/gog-line.c:349 ../plugins/plot_xy/gog-xy.c:2211 msgid "" "Slope at end of the interpolated curve when using clamped spline " "interpolation" @@ -7910,24 +7920,24 @@ msgid "Histogram" msgstr "Histogram" -#: ../plugins/plot_distrib/gog-histogram.c:373 +#: ../plugins/plot_distrib/gog-histogram.c:374 msgid "Draw the histogram vertically or horizontally" msgstr "Rita histogrammet vertikalt eller horisontellt" -#: ../plugins/plot_distrib/gog-histogram.c:378 +#: ../plugins/plot_distrib/gog-histogram.c:379 msgid "Cumulative" msgstr "Kumulativ" -#: ../plugins/plot_distrib/gog-histogram.c:379 +#: ../plugins/plot_distrib/gog-histogram.c:380 msgid "Use cumulated data" msgstr "Använd kumulativ data" -#: ../plugins/plot_distrib/gog-histogram.c:398 -#: ../plugins/plot_distrib/gog-histogram.c:488 +#: ../plugins/plot_distrib/gog-histogram.c:399 +#: ../plugins/plot_distrib/gog-histogram.c:489 msgid "Limits" msgstr "Gränser" -#: ../plugins/plot_distrib/gog-histogram.c:447 +#: ../plugins/plot_distrib/gog-histogram.c:448 msgid "" "Label for the first Y category. If not set or empty, \"First values\" will " "be used." @@ -7935,7 +7945,7 @@ "Etikett för den första Y-kategorin. Om inte angivet eller tomt, kommer " "”Förstavärden” att användas." -#: ../plugins/plot_distrib/gog-histogram.c:452 +#: ../plugins/plot_distrib/gog-histogram.c:453 msgid "" "Label for the second Y category. If not set or empty, \"Second values\" will " "be used." @@ -7943,19 +7953,19 @@ "Etikett för den andra Y-kategorin. Om inte angivet eller tomt, kommer " "”Andravärden” att användas." -#: ../plugins/plot_distrib/gog-histogram.c:458 +#: ../plugins/plot_distrib/gog-histogram.c:459 msgid "Categories labels" msgstr "Kategorietiketter" -#: ../plugins/plot_distrib/gog-histogram.c:490 -#: ../plugins/plot_distrib/gog-histogram.c:766 +#: ../plugins/plot_distrib/gog-histogram.c:491 +#: ../plugins/plot_distrib/gog-histogram.c:767 msgid "First values" msgstr "Förstavärden" -#: ../plugins/plot_distrib/gog-histogram.c:492 -#: ../plugins/plot_distrib/gog-histogram.c:774 -#: ../plugins/plot_distrib/gog-histogram.c:785 -#: ../plugins/plot_distrib/gog-histogram.c:797 +#: ../plugins/plot_distrib/gog-histogram.c:493 +#: ../plugins/plot_distrib/gog-histogram.c:775 +#: ../plugins/plot_distrib/gog-histogram.c:786 +#: ../plugins/plot_distrib/gog-histogram.c:798 msgid "Second values" msgstr "Andravärden" @@ -8858,27 +8868,27 @@ msgid "XYColor" msgstr "XYFärg" -#: ../plugins/plot_xy/gog-xy.c:2110 ../plugins/plot_xy/gog-xy.c:2181 +#: ../plugins/plot_xy/gog-xy.c:2115 ../plugins/plot_xy/gog-xy.c:2186 msgid "X error bars" msgstr "X-felstaplar" -#: ../plugins/plot_xy/gog-xy.c:2113 ../plugins/plot_xy/gog-xy.c:2187 +#: ../plugins/plot_xy/gog-xy.c:2118 ../plugins/plot_xy/gog-xy.c:2192 msgid "Y error bars" msgstr "Y-felstaplar" -#: ../plugins/plot_xy/gog-xy.c:2122 +#: ../plugins/plot_xy/gog-xy.c:2127 msgid "Horizontal drop lines" msgstr "Vågräta ränder" -#: ../plugins/plot_xy/gog-xy.c:2130 +#: ../plugins/plot_xy/gog-xy.c:2135 msgid "Vertical drop lines" msgstr "Lodräta ränder" -#: ../plugins/plot_xy/gog-xy.c:2193 +#: ../plugins/plot_xy/gog-xy.c:2198 msgid "Invalid as zero" msgstr "Ogiltigt som noll" -#: ../plugins/plot_xy/gog-xy.c:2194 +#: ../plugins/plot_xy/gog-xy.c:2199 msgid "Replace invalid values by 0 when drawing markers or bubbles" msgstr "" "Ersätt ogiltiga värden med 0 när ritning av markörer eller bubblor sker" diff -Nru goffice-0.10.56/tests/Makefile.am goffice-0.10.57/tests/Makefile.am --- goffice-0.10.56/tests/Makefile.am 2023-04-29 21:59:54.000000000 +0000 +++ goffice-0.10.57/tests/Makefile.am 2024-01-19 20:43:15.000000000 +0000 @@ -1,4 +1,4 @@ -check_PROGRAMS=test-quad test-math test-format test-dtoa constants +check_PROGRAMS=test-quad test-math test-format test-dtoa test-decimal constants if WITH_GTK check_PROGRAMS += pie-demo go-demo mf-demo endif @@ -7,7 +7,7 @@ AM_CFLAGS = $(GOFFICE_CFLAGS) -TESTS = test-quad test-math test-format test-dtoa +TESTS = test-quad test-math test-format test-dtoa test-decimal constants_LDADD = $(GOFFICE_PLUGIN_LIBADD) constants_SOURCES = constants.c @@ -30,6 +30,9 @@ test_math_LDADD = $(GOFFICE_PLUGIN_LIBADD) test_math_SOURCES = test-math.c +test_decimal_LDADD = $(GOFFICE_PLUGIN_LIBADD) +test_decimal_SOURCES = test-decimal.c + test_format_LDADD = $(GOFFICE_PLUGIN_LIBADD) test_format_SOURCES = test-format.c diff -Nru goffice-0.10.56/tests/Makefile.in goffice-0.10.57/tests/Makefile.in --- goffice-0.10.56/tests/Makefile.in 2023-11-02 23:08:04.000000000 +0000 +++ goffice-0.10.57/tests/Makefile.in 2024-01-20 03:19:44.000000000 +0000 @@ -88,11 +88,11 @@ build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = test-quad$(EXEEXT) test-math$(EXEEXT) \ - test-format$(EXEEXT) test-dtoa$(EXEEXT) constants$(EXEEXT) \ - $(am__EXEEXT_1) + test-format$(EXEEXT) test-dtoa$(EXEEXT) test-decimal$(EXEEXT) \ + constants$(EXEEXT) $(am__EXEEXT_1) @WITH_GTK_TRUE@am__append_1 = pie-demo go-demo mf-demo TESTS = test-quad$(EXEEXT) test-math$(EXEEXT) test-format$(EXEEXT) \ - test-dtoa$(EXEEXT) + test-dtoa$(EXEEXT) test-decimal$(EXEEXT) subdir = tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_is_release.m4 \ @@ -132,6 +132,9 @@ am_pie_demo_OBJECTS = pie-demo.$(OBJEXT) pie_demo_OBJECTS = $(am_pie_demo_OBJECTS) pie_demo_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_test_decimal_OBJECTS = test-decimal.$(OBJEXT) +test_decimal_OBJECTS = $(am_test_decimal_OBJECTS) +test_decimal_DEPENDENCIES = $(am__DEPENDENCIES_1) am_test_dtoa_OBJECTS = test-dtoa.$(OBJEXT) test_dtoa_OBJECTS = $(am_test_dtoa_OBJECTS) test_dtoa_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -161,8 +164,9 @@ am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/constants.Po ./$(DEPDIR)/go-demo.Po \ ./$(DEPDIR)/mf-demo.Po ./$(DEPDIR)/pie-demo.Po \ - ./$(DEPDIR)/test-dtoa.Po ./$(DEPDIR)/test-format.Po \ - ./$(DEPDIR)/test-math.Po ./$(DEPDIR)/test-quad.Po + ./$(DEPDIR)/test-decimal.Po ./$(DEPDIR)/test-dtoa.Po \ + ./$(DEPDIR)/test-format.Po ./$(DEPDIR)/test-math.Po \ + ./$(DEPDIR)/test-quad.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -183,13 +187,13 @@ am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(constants_SOURCES) $(go_demo_SOURCES) $(mf_demo_SOURCES) \ - $(pie_demo_SOURCES) $(test_dtoa_SOURCES) \ - $(test_format_SOURCES) $(test_math_SOURCES) \ - $(test_quad_SOURCES) + $(pie_demo_SOURCES) $(test_decimal_SOURCES) \ + $(test_dtoa_SOURCES) $(test_format_SOURCES) \ + $(test_math_SOURCES) $(test_quad_SOURCES) DIST_SOURCES = $(constants_SOURCES) $(go_demo_SOURCES) \ - $(mf_demo_SOURCES) $(pie_demo_SOURCES) $(test_dtoa_SOURCES) \ - $(test_format_SOURCES) $(test_math_SOURCES) \ - $(test_quad_SOURCES) + $(mf_demo_SOURCES) $(pie_demo_SOURCES) $(test_decimal_SOURCES) \ + $(test_dtoa_SOURCES) $(test_format_SOURCES) \ + $(test_math_SOURCES) $(test_quad_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -648,6 +652,8 @@ test_quad_SOURCES = test-quad.c test_math_LDADD = $(GOFFICE_PLUGIN_LIBADD) test_math_SOURCES = test-math.c +test_decimal_LDADD = $(GOFFICE_PLUGIN_LIBADD) +test_decimal_SOURCES = test-decimal.c test_format_LDADD = $(GOFFICE_PLUGIN_LIBADD) test_format_SOURCES = test-format.c test_dtoa_LDADD = $(GOFFICE_PLUGIN_LIBADD) @@ -713,6 +719,10 @@ @rm -f pie-demo$(EXEEXT) $(AM_V_CCLD)$(LINK) $(pie_demo_OBJECTS) $(pie_demo_LDADD) $(LIBS) +test-decimal$(EXEEXT): $(test_decimal_OBJECTS) $(test_decimal_DEPENDENCIES) $(EXTRA_test_decimal_DEPENDENCIES) + @rm -f test-decimal$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_decimal_OBJECTS) $(test_decimal_LDADD) $(LIBS) + test-dtoa$(EXEEXT): $(test_dtoa_OBJECTS) $(test_dtoa_DEPENDENCIES) $(EXTRA_test_dtoa_DEPENDENCIES) @rm -f test-dtoa$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_dtoa_OBJECTS) $(test_dtoa_LDADD) $(LIBS) @@ -739,6 +749,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/go-demo.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mf-demo.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pie-demo.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-decimal.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-dtoa.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-format.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-math.Po@am__quote@ # am--include-marker @@ -998,6 +1009,13 @@ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +test-decimal.log: test-decimal$(EXEEXT) + @p='test-decimal$(EXEEXT)'; \ + b='test-decimal'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ @@ -1094,6 +1112,7 @@ -rm -f ./$(DEPDIR)/go-demo.Po -rm -f ./$(DEPDIR)/mf-demo.Po -rm -f ./$(DEPDIR)/pie-demo.Po + -rm -f ./$(DEPDIR)/test-decimal.Po -rm -f ./$(DEPDIR)/test-dtoa.Po -rm -f ./$(DEPDIR)/test-format.Po -rm -f ./$(DEPDIR)/test-math.Po @@ -1147,6 +1166,7 @@ -rm -f ./$(DEPDIR)/go-demo.Po -rm -f ./$(DEPDIR)/mf-demo.Po -rm -f ./$(DEPDIR)/pie-demo.Po + -rm -f ./$(DEPDIR)/test-decimal.Po -rm -f ./$(DEPDIR)/test-dtoa.Po -rm -f ./$(DEPDIR)/test-format.Po -rm -f ./$(DEPDIR)/test-math.Po diff -Nru goffice-0.10.56/tests/test-decimal.c goffice-0.10.57/tests/test-decimal.c --- goffice-0.10.56/tests/test-decimal.c 1970-01-01 00:00:00.000000000 +0000 +++ goffice-0.10.57/tests/test-decimal.c 2024-01-23 15:38:56.000000000 +0000 @@ -0,0 +1,1004 @@ +#include + +static int n_bad; + +#ifdef GOFFICE_WITH_DECIMAL64 + +// There does not seem to be a way to teach these warnings about the +// "W" modifier that we have hooked into libc's printf. +#pragma GCC diagnostic ignored "-Wformat" +#pragma GCC diagnostic ignored "-Wformat-extra-args" + +/* ------------------------------------------------------------------------- */ + +static int n_section_good, n_section_bad; +static char *subsection; +static gboolean subsection_printed; + +static int +double_eq (double x, double y) +{ + return memcmp (&x, &y, sizeof(x)) == 0; +} + +static int +decimal_eq (_Decimal64 x, _Decimal64 y) +{ + if (signbitD (x) != signbitD (y)) + return FALSE; + + if (isnanD (x) != isnanD (y)) + return FALSE; + else if (isnanD (x)) + return TRUE; + + return x == y; +} + +static void +start_section (const char *header) +{ + g_printerr ("-----------------------------------------------------------------------------\n"); + g_printerr ("Testing %s\n\n", header); + + n_section_good = n_section_bad = 0; +} + +static void +set_subsection (const char *sub) +{ + g_free (subsection); + subsection = g_strdup (sub); + subsection_printed = FALSE; +} + +static void +end_section (void) +{ + if (n_section_bad) + g_printerr ("\n"); + g_printerr ("For this section: good: %d, bad: %d\n\n", + n_section_good, n_section_bad); + set_subsection (NULL); +} + +static void +good (void) +{ + n_section_good++; +} + +static void +bad (void) +{ + if (subsection && !subsection_printed) { + g_printerr ("Trouble with %s\n", subsection); + subsection_printed = TRUE; + } + n_section_bad++; + n_bad++; +} + +static int +test_eq (_Decimal64 a, _Decimal64 b) +{ + if (decimal_eq (a, b)) { + good (); + return 1; + } else { + bad (); + g_printerr ("%.16Wg vs %.16Wg\n", a, b); + return 0; + } +} + +static int +test_quad_eq (GOQuadD const *a, GOQuadD const *b, _Decimal64 maxerr) +{ + GOQuadD qd, qc; + + go_quad_subD (&qd, a, b); + go_quad_absD (&qd, &qd); + + go_quad_initD (&qc, maxerr); + go_quad_subD (&qd, &qd, &qc); + + if (go_quad_valueD (&qd) <= 0) { + good (); + return 1; + } else { + bad (); + g_printerr ("Quad %.16Wg + %.16Wg\n", a->h, a->l); + g_printerr (" vs %.16Wg + %.16Wg\n", b->h, b->l); + return 0; + } +} + +/* ------------------------------------------------------------------------- */ + +typedef struct { + _Decimal64 *vals; + int nvals; +} Corpus; + +static Corpus * +corpus_new (int count) +{ + Corpus *res = g_new (Corpus, 1); + res->nvals = count; + res->vals = g_new (_Decimal64, res->nvals); + return res; +} + +static void +corpus_free (Corpus *corpus) +{ + g_free (corpus->vals); + g_free (corpus); +} + +static Corpus * +corpus_concat (Corpus *first, gboolean free_first, + Corpus *second, gboolean free_second) +{ + Corpus *res = corpus_new (first->nvals + second->nvals); + + memcpy (res->vals, first->vals, first->nvals * sizeof(_Decimal64)); + memcpy (res->vals + first->nvals, second->vals, second->nvals * sizeof(_Decimal64)); + + if (free_first) corpus_free (first); + if (free_second) corpus_free (second); + + return res; +} + +static Corpus * +basic_corpus (void) +{ + static const _Decimal64 values64[] = { + 0.dd, 3.14dd, 0.123dd, 0.05dd, 1.5dd, 0.567dd, 999999999.5dd, + 100.dd, 1e20dd, 0.01dd, 1e-20dd, 0.1dd, + 0.3333333333333333dd, 0.5555555555555555dd, 0.9999999999999999dd, + INFINITY, NAN, + 1e15dd, 999999999999999.9dd, 999999999999999.0dd, + 1e15dd + 1, 1e22dd, + 2.5dd, 1.5dd, // make sure we don't round-ties-to-even + 1.000000001dd, + + // Out of double range + DECIMAL64_MAX, + DECIMAL64_MIN, + }; + Corpus *res = corpus_new (2 * G_N_ELEMENTS (values64)); + _Decimal64 *p; + size_t i; + + for (i = 0, p = res->vals; i < G_N_ELEMENTS (values64); i++) { + *p++ = values64[i]; + *p++ = -values64[i]; + } + + return res; +} + +static Corpus * +linear_corpus (int count, _Decimal64 slope, _Decimal64 offset) +{ + Corpus *res = corpus_new (count); + int i; + + for (i = 0; i < count; i++) + res->vals[i] = i * slope + offset; + + return res; +} + +static Corpus * +power_corpus (int count, _Decimal64 low, _Decimal64 f) +{ + Corpus *res = corpus_new (count); + int i; + + for (i = 0; i < count; i++) { + res->vals[i] = low; + low *= f; + } + + return res; +} + +/* ------------------------------------------------------------------------- */ + +static void +test_rounding (const Corpus *corpus) +{ + start_section ("rounding operations (floor, ceil, round, trunc)"); + + for (int v = 0; v < corpus->nvals; v++) { + _Decimal64 x = corpus->vals[v]; + + _Decimal64 f = floorD (x); + _Decimal64 c = ceilD (x); + _Decimal64 r = roundD (x); + _Decimal64 t = truncD (x); + double dx = x; + int sanity; + int qunderflow = (dx == 0) && (x != 0); + int qoverflow = finiteD (x) && !finite (dx); + int ok; + + sanity = isnanD (x) + ? 1 + : (f <= x && x <= c && + (c == f || c == f + 1) && + (r == f || r == c) && + (x < 0 ? t == c : t == f) && + r <= x + 0.5dd && + r >= x - 0.5dd); + if (qunderflow) + ok = (r == 0 && (f == 0 || c == 0)); + else if (qoverflow) + ok = (f == x && f == x); + else + ok = (double_eq (f, floor (dx)) && + double_eq (r, round (dx)) && + double_eq (c, ceil (dx))); + + if (ok && sanity) { + good (); + } else { + uint64_t d64; + memcpy (&d64, &x, sizeof (d64)); + + bad (); + g_printerr ("Error: 0x%08lx: %.16Wg -> (%.16Wg , %.16Wg , %.16Wg , %.16Wg)\n", + d64, x, f, r, c, t); + } + } + + end_section (); +} + +static void +test_properties (const Corpus *corpus) +{ + start_section ("properties (isnan, finite, signbit)"); + + for (int v = 0; v < corpus->nvals; v++) { + _Decimal64 x = corpus->vals[v]; + + int qnan = isnanD (x); + int qfinite = finiteD (x); + int qsign = signbit (x); + double dx = x; + + if (!!qnan == (x != x) && + !!qfinite == (fabsD (x) <= DECIMAL64_MAX) && + !!qsign == !!signbit (dx)) { + good (); + } else { + uint64_t d64; + memcpy (&d64, &x, sizeof (d64)); + + bad (); + g_printerr ("Error: 0x%08lx: %.16Wg -> %d %d %d\n", + d64, x, qnan, qfinite, qsign); + } + } + + end_section (); +} + +static void +test_copysign (const Corpus *corpus) +{ + start_section ("copysign"); + + for (int v1 = 0; v1 < corpus->nvals; v1++) { + _Decimal64 x1 = corpus->vals[v1]; + for (int v2 = 0; v2 < corpus->nvals; v2++) { + _Decimal64 x2 = corpus->vals[v2]; + + _Decimal64 y = copysignD (x1, x2); + if (decimal_eq (fabsD (y), fabsD (x1)) && + signbitD (y) == signbitD (x2)) + good (); + else { + bad (); + g_printerr ("Failed for %.16Wg %.16Wg\n", x1, x2); + } + } + } + + end_section (); +} + + +static void +test_nextafter (void) +{ + _Decimal64 m; + start_section ("nextafter"); + + m = nextafterD (0, 4); + test_eq (m, 1e-398dd); + test_eq (nextafterD (0, -4), -1e-398dd); + test_eq (nextafterD (nextafterD (0, +4), -4), 0.dd); + test_eq (nextafterD (nextafterD (0, -4), +4), -0.dd); + test_eq (nextafterD (1111111111111111.dd, INFINITY), 1111111111111112.dd); + test_eq (nextafterD (-1111111111111111.dd, INFINITY), -1111111111111110.dd); + test_eq (nextafterD (1000000000000000.dd, INFINITY), 1000000000000001.dd); + test_eq (nextafterD (1000000000000000.dd, -INFINITY),999999999999999.9dd); + test_eq (nextafterD (1000000000000000e-10dd, INFINITY), 1000000000000001e-10dd); + test_eq (nextafterD (1000000000000000e-10dd, -INFINITY), 999999999999999.9e-10dd); + test_eq (nextafterD (1000000000000000e+99dd, INFINITY), 1000000000000001e+99dd); + test_eq (nextafterD (1000000000000000e+99dd, -INFINITY), 999999999999999.9e+99dd); + test_eq (nextafterD (1000000000000001.dd, INFINITY), 1000000000000002.dd); + test_eq (nextafterD (999999999999999.dd, +INFINITY), 999999999999999.1dd); + test_eq (nextafterD (999999999999999.9dd, +INFINITY), 1000000000000000.dd); + test_eq (nextafterD (INFINITY, INFINITY), INFINITY); + test_eq (nextafterD (-INFINITY, -INFINITY), -INFINITY); + test_eq (nextafterD (INFINITY, NAN), NAN); + test_eq (nextafterD (m, 1), 2 * m); + test_eq (nextafterD (2 * m, 0), m); + test_eq (nextafterD (9 * m, 1), 10 * m); + test_eq (nextafterD (10 * m, 1), 11 * m); + test_eq (nextafterD (DECIMAL64_MAX / 10, INFINITY), + DECIMAL64_MAX / 10 + DECIMAL64_MAX / 1e17dd); + test_eq (nextafterD (DECIMAL64_MAX, INFINITY), INFINITY); + test_eq (nextafterD (-DECIMAL64_MAX, -INFINITY), -INFINITY); + test_eq (nextafterD (INFINITY, 0), DECIMAL64_MAX); + + end_section (); +} + +static void +test_modf (const Corpus *corpus) +{ + start_section ("modf"); + + for (int v = 0; v < corpus->nvals; v++) { + _Decimal64 x = corpus->vals[v]; + _Decimal64 y, z; + + z = modfD (x, &y); + + test_eq (y, copysignD (truncD (x), x)); + test_eq (z, copysignD (fabsD (x) == go_pinfD ? 0 : x - truncD (x), x)); + } + + end_section (); +} + +static void +test_log (const char *name, int base, const Corpus *corpus) +{ + double (*fn_double) (double); + _Decimal64 (*fn_decimal) (_Decimal64); + + start_section (name); + + switch (base) { + default: + case 2: fn_decimal = log2D; fn_double = log2; break; + case 3: fn_decimal = logD; fn_double = log; break; + case 10: fn_decimal = log10D; fn_double = log10; break; + } + + for (int v = 0; v < corpus->nvals; v++) { + _Decimal64 x = corpus->vals[v], y = fn_decimal (x); + double dx = x, dy = fn_double (dx); + gboolean ok; + int qunderflow = (dx == 0) && (x != 0); + int qoverflow = finiteD (x) && !finite (dx); + + if (fabsD (x - 1) < 0.01dd) + continue; + + if (x < 0) + ok = isnanD (y); + else if (qunderflow) + ok = finiteD (y) && y <= (_Decimal64)(fn_double (DBL_MIN)); + else if (qoverflow) + ok = finiteD (y) && y >= (_Decimal64)(fn_double (DBL_MAX)); + else { + ok = (!!finiteD (y) == !!finite (dy) && + !!isnanD (y) == !!isnan (dy) && + !!signbitD (y) == !!signbit (dy) && + (y == 0) == (dy == 0)); + + if (ok && finite (dy)) { + ok = ((y == floorD (y)) == (dy == floor (dy))); + + if (ok && y != 0) { + _Decimal64 d = y - (_Decimal64)dy; + ok = fabsD (d / y) < 1e-10dd; + } + } + } + + if (ok) + good (); + else { + bad (); + g_printerr ("Failed for %.16Wg -- got %.16Wg vs %.16g\n", x, y, dy); + } + } + + end_section (); +} + +static void +test_scalbn (void) +{ + _Decimal64 x; + int i; + + start_section ("scalbn"); + + test_eq (scalbnD (0.1234567890123456dd, 10), 1234567890.123456dd); + + test_eq (scalbnD (0.0dd, G_MAXINT), 0.0dd); + test_eq (scalbnD (0.0dd, G_MININT), 0.0dd); + test_eq (scalbnD (0.0dd, 0), 0.0dd); + test_eq (scalbnD (-0.0dd, G_MAXINT), -0.0dd); + test_eq (scalbnD (-0.0dd, G_MININT), -0.0dd); + + test_eq (scalbnD ((_Decimal64)INFINITY, G_MAXINT), (_Decimal64)INFINITY); + test_eq (scalbnD ((_Decimal64)INFINITY, G_MININT), (_Decimal64)INFINITY); + test_eq (scalbnD ((_Decimal64)INFINITY, 0), (_Decimal64)INFINITY); + test_eq (scalbnD (-(_Decimal64)INFINITY, G_MAXINT), -(_Decimal64)INFINITY); + test_eq (scalbnD (-(_Decimal64)INFINITY, G_MININT), -(_Decimal64)INFINITY); + + test_eq (scalbnD ((_Decimal64)NAN, G_MAXINT), (_Decimal64)NAN); + test_eq (scalbnD ((_Decimal64)NAN, G_MININT), (_Decimal64)NAN); + test_eq (scalbnD ((_Decimal64)NAN, 0), (_Decimal64)NAN); + test_eq (scalbnD (-(_Decimal64)NAN, G_MAXINT), -(_Decimal64)NAN); + test_eq (scalbnD (-(_Decimal64)NAN, G_MININT), -(_Decimal64)NAN); + + test_eq (scalbnD (1e-398dd, 398 + 369), 1e369dd); + test_eq (scalbnD (1e-398dd, 398 + 384), 1e384dd); + test_eq (scalbnD (1e-398dd, 398 + 384 + 1), (_Decimal64)INFINITY); + test_eq (scalbnD (1e384dd, -398 - 384), 1e-398dd); + test_eq (scalbnD (9999999999999999e369dd, -369 - 383), 9999999999999999e-383dd); + test_eq (scalbnD (1e384dd, -398 - 384 - 1), 0.dd); + test_eq (scalbnD (-1e384dd, -398 - 384 - 1), -0.dd); + test_eq (scalbnD (5e384dd, -398 - 384 - 1), 1e-398dd); + + test_eq (scalbnD (5e-398dd, -1), 1e-398dd); + test_eq (scalbnD (5000000000000000e-398dd, -16), 1e-398dd); + + x = 1.dd; + for (i = 0; i <= 384; i++) { + test_eq (scalbnD (1.dd, i), x); + test_eq (powD (10.dd, i), x); + x *= 10; + } + + end_section (); +} + + + +static void +test_oneargs (const Corpus *corpus) +{ + static const struct { + const char *name; + _Decimal64 (*fn_decimal) (_Decimal64); + double (*fn_double) (double); + } funcs[] = { + { "acosD", acosD, acos }, + { "acoshD", acoshD, acosh }, + { "asinD", asinD, asin }, + { "asinhD", asinhD, asinh }, + { "atanD", atanD, atan }, + { "atanhD", atanhD, atanh }, + { "cbrtD", cbrtD, cbrt }, + { "ceilD", ceilD, ceil }, + { "cosD", cosD, cos }, + { "coshD", coshD, cosh }, + { "erfD", erfD, erf }, + { "erfcD", erfcD, erfc }, + { "expD", expD, exp }, + { "expm1D", expm1D, expm1 }, + { "fabsD", fabsD, fabs }, + { "floorD", floorD, floor }, + { "lgammaD", lgammaD, lgamma }, + // { "log10D", log10D, log10 }, + { "log1pD", log1pD, log1p }, + // { "log2D", log2D, log2 }, + // { "logD", logD, log }, + { "roundD", roundD, round }, + { "sinD", sinD, sin }, + { "sinhD", sinhD, sinh }, + { "sqrtD", sqrtD, sqrt }, + { "tanD", tanD, tan }, + { "tanhD", tanhD, tanh }, + { "truncD", truncD, trunc }, + }; + + start_section ("one-arg functions"); + + for (int f = 0; f < (int)G_N_ELEMENTS (funcs); f++) { + set_subsection (funcs[f].name); + for (int v = 0; v < corpus->nvals; v++) { + _Decimal64 x = corpus->vals[v], y; + double dx = x, dy; + int ok; + int qunderflow = (dx == 0) && (x != 0); + int qoverflow = finiteD (x) && !finite (dx); + _Decimal64 tol = 1e-10dd; + + if (qunderflow || qoverflow) + continue; + + // Going through double doesn't work well here + if (funcs[f].fn_decimal == atanhD && + fabsD (fabsD (x) - 1) <= 1e-15dd) + tol = 1e-2dd; + + y = funcs[f].fn_decimal (x); + dy = funcs[f].fn_double (dx); + + //g_printerr ("%.16Wg %.16Wg\n", x, y); + //g_printerr ("%.16g %.16g\n", dx, dy); + + ok = (!!finiteD (y) == !!finite (dy) && + !!isnanD (y) == !!isnan (dy) && + !!signbitD (y) == !!signbit (dy) && + (y == 0) == (dy == 0)); + + if (ok && finite (dy) && y != 0) { + _Decimal64 d = y - (_Decimal64)dy; + ok = fabsD (d / y) < tol; + } + + if (ok) + good (); + else { + g_printerr ("Failed for %.16Wg\n", x); + test_eq (y, dy); + } + } + } + + end_section (); +} + + +static void +test_dtoa (const Corpus *corpus) +{ + static const char *fmts[] = { + "=^.0f", "=^.1f", "=^.2f", "=^.3f", "=^.4f", + "=^.5f", "=^.6f", "=^.7f", "=^.8f", "=^.9f", + "=^.0e", "=^.1e", "=^.2e", "=^.3e", "=^.4e", + "=^.5e", "=^.6e", "=^.7e", "=^.8e", "=^.9e", + "=^.0g", "=^.1g", "=^.2g", "=^.3g", "=^.4g", + "=^.5g", "=^.6g", "=^.7g", "=^.8g", "=^.9g", + }; + const int nfmts = G_N_ELEMENTS (fmts); + GString *s1, *s2; + + start_section ("go_dtoa"); + + s1 = g_string_new (NULL); + s2 = g_string_new (NULL); + + if (0) { + _Decimal64 d = .567dd; + g_printerr ("[%.0f]\n", (double)d); + go_dtoa (s1, "=^.0Wf", d); + g_printerr ("[%s]\n", s1->str); + return; + } + + for (int f = 0; f < nfmts; f++) { + const char *fmt = fmts[f]; + int lfmt = strlen (fmt); + gboolean fstyle = g_ascii_toupper (fmt[lfmt - 1]) == 'F'; + char fmt2[100]; + strcpy (fmt2, fmt); + fmt2[lfmt + 1] = 0; + fmt2[lfmt + 0] = fmt2[lfmt - 1]; + fmt2[lfmt - 1] = 'W'; + + set_subsection (fmt); + + for (int v = 0; v < corpus->nvals; v++) { + _Decimal64 x = corpus->vals[v]; + double dx = x; + int qunderflow = (dx == 0) && (x != 0); + int qoverflow = finiteD (x) && !finite (dx); + + if (qunderflow || qoverflow) + continue; + + if (fstyle && fabsD (x) > 0 && finiteD (x) && + log10D (fabsD (x)) > 8) + continue; + + go_dtoa (s1, fmt, dx); + go_dtoa (s2, fmt2, x); + if (g_string_equal (s1, s2)) { + good (); + } else { + bad (); + g_printerr ("Got [%s], expected [%s] [%.20g]\n", + s2->str, s1->str, dx); + } + } + } + g_string_free (s1, TRUE); + g_string_free (s2, TRUE); + + end_section (); +} + +static void +test_pow (const Corpus *corpus1, const Corpus *corpus2) +{ + start_section ("pow"); + + for (int v1 = 0; v1 < corpus1->nvals; v1++) { + _Decimal64 x1 = corpus1->vals[v1]; + double dx1 = x1; + int qunderflow1 = (dx1 == 0) && (x1 != 0); + int qoverflow1 = finiteD (x1) && !finite (dx1); + + if (qunderflow1 || qoverflow1) + continue; + + for (int v2 = 0; v2 < corpus2->nvals; v2++) { + _Decimal64 x2 = corpus2->vals[v2]; + double dx2 = x2; + int qunderflow2 = (dx2 == 0) && (x2 != 0); + int qoverflow2 = finiteD (x2) && !finite (dx2); + gboolean ok; + + if (qunderflow2 || qoverflow2) + continue; + + if (x1 < 0 && x2 < 0 && + finiteD (x1) && + finiteD (x2) && x2 == floorD (x2) && + fmodD (x2, 2.dd) != fmodD (dx2, 2.dd)) + continue; + + double dy = pow (dx1, dx2); + _Decimal64 y = powD (x1, x2); + + if (!signbitD (y) != !signbit (dy)) + ok = FALSE; + if (isnanD (y) || isnan (y)) + ok = isnanD (y) && isnan (y); + else if (!finiteD (y) || !finite (dy)) + ok = (!finiteD (y) && !finite (dy)); + else + ok = decimal_eq (y, dy); + + if (ok) { + good (); + } else { + bad (); + g_printerr ("Failed for %.16Wg %.16Wg\n", x1, x2); + g_printerr ("Got %.16Wg vs %.16g\n", y, dy); + } + } + } + + end_section (); +} + +static void +test_atan2 (const Corpus *corpus1, const Corpus *corpus2) +{ + start_section ("atan2"); + + for (int v1 = 0; v1 < corpus1->nvals; v1++) { + _Decimal64 x1 = corpus1->vals[v1]; + double dx1 = x1; + + for (int v2 = 0; v2 < corpus2->nvals; v2++) { + _Decimal64 x2 = corpus2->vals[v2]; + double dx2 = x2; + gboolean ok; + + double dy = (x1 / x2 == 0) + ? copysign (x2 > 0 ? 0 : M_PI, dx1) + : (x2 == 0 && x1 != 0 + ? atan2 (x1 > 0 ? 1 : -1, dx2) + : (!finiteD (x1) + ? atan2 (dx1, x2 / 1e100dd) + : (dx1 == 0 && dx2 == 0 + ? atan2 (x1 * 1e100dd, x2 * 1e100dd) + : atan2 (dx1, dx2)))); + _Decimal64 y = atan2D (x1, x2); + + if (!signbitD (y) != !signbit (dy)) + ok = FALSE; + if (isnanD (y) || isnan (y)) + ok = isnanD (y) && isnan (y); + else if (!finiteD (y) || !finite (dy)) + ok = (!finiteD (y) && !finite (dy)); + else + ok = decimal_eq (y, dy); + + if (ok) { + good (); + } else { + bad (); + g_printerr ("Failed for %.16Wg %.16Wg\n", x1, x2); + g_printerr ("Got %.16Wg vs %.16g\n", y, dy); + } + } + } + + end_section (); +} + +static void +test_hypot (const Corpus *corpus1, const Corpus *corpus2) +{ + start_section ("hypot"); + + for (int v1 = 0; v1 < corpus1->nvals; v1++) { + _Decimal64 x1 = corpus1->vals[v1]; + double dx1 = x1; + + int qunderflow1 = (dx1 == 0) && (x1 != 0); + int qoverflow1 = finiteD (x1) && !finite (dx1); + + if (qunderflow1 || qoverflow1) + continue; + + for (int v2 = 0; v2 < corpus2->nvals; v2++) { + _Decimal64 x2 = corpus2->vals[v2]; + double dx2 = x2; + int qunderflow2 = (dx2 == 0) && (x2 != 0); + int qoverflow2 = finiteD (x2) && !finite (dx2); + gboolean ok; + + if (qunderflow2 || qoverflow2) + continue; + + double dy = hypot (dx1, dx2); + _Decimal64 y = hypotD (x1, x2); + + if (!signbitD (y) != !signbit (dy)) + ok = FALSE; + if (isnanD (y) || isnan (y)) + ok = isnanD (y) && isnan (y); + else if (!finiteD (y) || !finite (dy)) + ok = (!finiteD (y) && !finite (dy)); + else { + _Decimal64 y2 = dy; + _Decimal64 diff = y - y2; + if (fabsD (diff) <= y * 1e-15dd) + ok = TRUE; + else + ok = decimal_eq (y, dy); + } + + if (ok) { + good (); + } else { + bad (); + g_printerr ("Failed for %.16Wg %.16Wg\n", x1, x2); + g_printerr ("Got %.16Wg vs %.16g\n", y, dy); + } + } + } + + end_section (); +} + +static void +test_fmod (const Corpus *corpus1, const Corpus *corpus2) +{ + start_section ("fmodD"); + + for (int v1 = 0; v1 < corpus1->nvals; v1++) { + _Decimal64 x1 = corpus1->vals[v1]; + + for (int v2 = 0; v2 < corpus2->nvals; v2++) { + _Decimal64 x2 = corpus2->vals[v2]; + gboolean ok; + _Decimal64 y = fmodD (x1, x2); + + ok = !signbitD (y) == !signbitD (x1); + + if (isnanD (x1) || isnanD (x2) || x2 == 0) + ok = ok && isnanD (y); + + if ((x1 == 0 && fabsD (x2) > 0) || + (finiteD (x1) && x2 == (_Decimal64)INFINITY)) + ok = ok && decimal_eq (y, x1); + + // This is a poor test. We need something curated specially + // for fmod. + if (ok && finiteD (y) && finiteD (x2)) { + _Decimal64 q = x1 / x2; + _Decimal64 r = x1 - truncD (q) * x2; + ok = (fabsD (y) < fabsD (x2)); + if (y != r) { + //g_printerr (" %.16Wg %.16Wg\n", y, r); + } + } + + if (ok) { + good (); + } else { + bad (); + g_printerr ("Failed for %.16Wg %.16Wg\n", x1, x2); + g_printerr ("Got %.16Wg vs %.16g\n", y, fmod (x1, x2)); + } + } + } + + end_section (); +} + +static void +test_quad_exp_pow (void) +{ + GOQuadD qa, qb, qc, qsqrt1000, qe; + _Decimal64 p10; + void *state; + + start_section ("quad exp, pow"); + + state = go_quad_startD (); + + go_quad_initD (&qa, 1000); + go_quad_sqrtD (&qb, &qa); + qsqrt1000.h = 31.62277660168379dd; + qsqrt1000.l = .3319988935444327e-14dd; // observe ...329 + test_quad_eq (&qb, &qsqrt1000, 2e-30dd); + + qb = qsqrt1000; + qb.h *= 1000; + qb.l *= 1000; + go_quad_expD (&qc, &p10, &qb); + + qe.h = 3.957132301185386dd; + qe.l = -.3807734103472098e-15dd; + // * 10^13733 + test_eq (p10, 13733); + test_quad_eq (&qc, &qe, 1e-27dd); + + // g_printerr ("c = %.16Wg + %.16Wg (%.16Wg)\n", qc.h, qc.l, p10); + // c = 3.957132301185386 + -3.807734103479432e-16 (13733) + + go_quad_end (state); + + end_section (); +} + + +static void +test_strto (void) +{ + start_section ("strto"); + + test_eq (strtoDd ("123", NULL), 123.dd); + test_eq (strtoDd ("123.", NULL), 123.dd); + test_eq (strtoDd ("+123.", NULL), 123.dd); + test_eq (strtoDd ("-123.0", NULL), -123.dd); + test_eq (strtoDd (".123", NULL), .123dd); + test_eq (strtoDd ("0.0000000000000000000000000123", NULL), 0.0000000000000000000000000123dd); + test_eq (strtoDd ("0.0000000000000000000000000123", NULL), 0.0000000000000000000000000123dd); + test_eq (strtoDd ("9999999999999999", NULL), 9999999999999999.dd); + test_eq (strtoDd ("99999999999999999", NULL), 1e17dd); + test_eq (strtoDd ("10000000000000000", NULL), 1e16dd); + + test_eq (strtoDd ("1e10", NULL), 1e10dd); + test_eq (strtoDd ("-1e10", NULL), -1e10dd); + test_eq (strtoDd ("+1e10", NULL), +1e10dd); + test_eq (strtoDd ("1e-10", NULL), 1e-10dd); + test_eq (strtoDd ("1e+10", NULL), 1e+10dd); + + test_eq (strtoDd ("1E10", NULL), 1e10dd); + test_eq (strtoDd ("-1E10", NULL), -1e10dd); + test_eq (strtoDd ("+1E10", NULL), +1e10dd); + test_eq (strtoDd ("1E-10", NULL), 1e-10dd); + test_eq (strtoDd ("1E+10", NULL), 1e+10dd); + + test_eq (strtoDd ("123e+f", NULL), 123.dd); + + test_eq (strtoDd ("infinity", NULL), INFINITY); + test_eq (strtoDd ("-infinity", NULL), -(_Decimal64)INFINITY); + test_eq (strtoDd ("+infinity", NULL), INFINITY); + test_eq (strtoDd ("inf", NULL), INFINITY); + test_eq (strtoDd ("-inf", NULL), -(_Decimal64)INFINITY); + test_eq (strtoDd ("+inf", NULL), INFINITY); + test_eq (strtoDd ("INFInity", NULL), INFINITY); + test_eq (strtoDd ("-INFInity", NULL), -(_Decimal64)INFINITY); + test_eq (strtoDd ("+INFInity", NULL), INFINITY); + test_eq (strtoDd ("INF", NULL), INFINITY); + test_eq (strtoDd ("-INF", NULL), -(_Decimal64)INFINITY); + test_eq (strtoDd ("+INF", NULL), INFINITY); + + + end_section (); +} + + + +/* ------------------------------------------------------------------------- */ + +#endif + +int +main (int argc, char **argv) +{ +#ifdef GOFFICE_WITH_DECIMAL64 + Corpus *corpus, *corpus2; + + libgoffice_init (); + + corpus = basic_corpus (); + + test_rounding (corpus); + test_properties (corpus); + test_copysign (corpus); + test_nextafter (); + test_oneargs (corpus); + test_modf (corpus); + test_scalbn (); + + corpus2 = corpus_concat + (corpus, 0, + corpus_concat (power_corpus (50, 1.dd, 2), 1, + power_corpus (16, 1.dd, 0.5dd), 1), 1); + test_log ("log2", 2, corpus2); + corpus_free (corpus2); + + test_log ("log", 3, corpus); + + corpus2 = corpus_concat + (corpus, 0, + power_corpus (300, 1.dd, 10), 1); + test_log ("log10", 10, corpus2); + corpus_free (corpus2); + + // The offset here is partly for the benefit of going through + // double for the reference string and partly to test something + // else + corpus2 = corpus_concat + (corpus, 0, + corpus_concat (linear_corpus (10001, 1e-3dd, 1e-14dd), 1, + linear_corpus (10001, 1e-3dd, -1e-14dd), 1), 1); + test_dtoa (corpus2); + corpus_free (corpus2); + + test_atan2 (corpus, corpus); + + test_hypot (corpus, corpus); + + test_fmod (corpus, corpus); + + // Very preliminary + test_pow (corpus, corpus); + test_quad_exp_pow (); + + test_strto (); + + g_printerr ("-----------------------------------------------------------------------------\n"); + + if (n_bad) + g_printerr ("FAIL: A total of %d failures.\n", n_bad); + else + g_printerr ("Pass.\n"); + + corpus_free (corpus); + + libgoffice_shutdown (); + +#else + g_printerr ("Not compiled with Decimal64 support, so no testing.\n"); +#endif + + return n_bad ? 1 : 0; +} diff -Nru goffice-0.10.56/tests/test-quad.c goffice-0.10.57/tests/test-quad.c --- goffice-0.10.56/tests/test-quad.c 2018-11-17 19:25:40.000000000 +0000 +++ goffice-0.10.57/tests/test-quad.c 2023-12-22 17:10:12.000000000 +0000 @@ -368,11 +368,15 @@ { g_assert (fabs (go_quad_value (&go_quad_pi) - M_PI) < 1e-14); g_assert (fabs (go_quad_value (&go_quad_2pi) - 2 * M_PI) < 1e-14); + g_assert (fabs (go_quad_value (&go_quad_pihalf) - M_PI / 2) < 1e-14); g_assert (fabs (go_quad_value (&go_quad_e) - exp(1)) < 1e-14); g_assert (fabs (go_quad_value (&go_quad_ln2) - log(2)) < 1e-14); + g_assert (fabs (go_quad_value (&go_quad_ln10) - log(10)) < 1e-13); g_assert (fabs (go_quad_value (&go_quad_sqrt2) - sqrt(2)) < 1e-14); + g_assert (fabs (go_quad_value (&go_quad_euler) - 0.57721566490153286060) < 1e-14); g_assert (go_quad_value (&go_quad_zero) == 0); g_assert (go_quad_value (&go_quad_one) == 1); + g_assert (go_quad_value (&go_quad_half) == 0.5); } static void diff -Nru goffice-0.10.56/tools/ChangeLog goffice-0.10.57/tools/ChangeLog --- goffice-0.10.56/tools/ChangeLog 2023-11-02 23:07:40.000000000 +0000 +++ goffice-0.10.57/tools/ChangeLog 2024-02-11 17:18:25.000000000 +0000 @@ -1,3 +1,7 @@ +2024-02-11 Morten Welinder + + * Release 0.10.57 + 2023-11-02 Morten Welinder * Release 0.10.56