+ struct substring ss;
+ union value double_value ;
+
+ assert (table != NULL);
+
+ assert (c >= 0);
+ assert (c < tab_nc (table));
+ assert (r >= 0);
+ assert (r < tab_nr (table));
+
+ if ( fmt == NULL)
+ fmt = settings_get_format ();
+
+ fmt_check_output (fmt);
+
+#if DEBUGGING
+ if (c + table->col_ofs < 0 || r + table->row_ofs < 0
+ || c + table->col_ofs >= tab_nc (table)
+ || r + table->row_ofs >= tab_nr (table))
+ {
+ printf ("tab_double(): bad cell (%d+%d=%d,%d+%d=%d) in table size "
+ "(%d,%d)\n",
+ c, table->col_ofs, c + table->col_ofs,
+ r, table->row_ofs, r + table->row_ofs,
+ tab_nc (table), tab_nr (table));
+ return;
+ }
+#endif
+
+ double_value.f = val;
+ ss = ss_cstr (data_out_pool (&double_value, LEGACY_NATIVE, fmt, table->container));
+
+ ss_ltrim (&ss, ss_cstr (" "));
+
+ table->cc[c + r * table->cf] = ss;
+ table->ct[c + r * table->cf] = opt;
+}