X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2FChangeLog;h=b2ec733528199fb3acaf783f6de40838faeb1a3a;hb=4239c455e7b1061b7c960b793f9080e113123845;hp=13b90dcc3b38ee50bd1eb971972d622fdf8707d6;hpb=92bfefccd465052e492f669ce561aa25b0110283;p=pspp-builds.git diff --git a/src/ChangeLog b/src/ChangeLog index 13b90dcc..b2ec7335 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,720 @@ +Wed Dec 29 08:18:08 WST 2004 John Darrington + + * percentiles.[ch] Added. Calculates percentiles and Tukey hinges + + * examine.q factor_stats.[ch] Added calculation of percentiles + +Fri Dec 24 15:09:11 WST 2004 John Darrington + + * t-test.q Fixed bug #11227 Made t-test work when the independent + variable is alpha + +Sat Dec 11 11:43:45 WST 2004 John Darrington + + * factor_stats.c Fixed calculation of trimmed mean under various + special conditions. + +Sat Dec 4 17:14:45 WST 2004 John Darrington + + * histogram.c chart.[ch] factor_stats.c frequencies.q + + Added code to calculate sensible histogram ranges and limits. + +Thu Dec 2 13:37:43 WST 2004 John Darrington + + * chart.h Updated to reflect many API changes. + + * cartesian.c chart.c Moved the definitions of chart_write_{xy}scale from + cartesian.c and into chart.c + + * factorstats.[ch] Added the histogram calculations + + * casefile.c Removed an unused variable. + + * frequencies.q examine.q histogram.c Reworked the API for + histograms. + + * piechart.c Revised the API for piecharts. + + * var.h Moved the definitions of freq_tab and freq out of var.h + and into frequencies.q where they belong. + +Tue Nov 30 21:10:20 2004 Ben Pfaff + + * flip.c: (flip_file) Check for off_t separately from fseeko(), + using AC_TYPE_OFF_T. + +Tue Nov 30 08:47:41 2004 Ben Pfaff + + * flip.c: (flip_file) If fseeko() is not available, use long int + for off_t. Thanks to "Marshall DeBerry" for + reporting the problem. + +Mon Nov 29 12:20:59 WST 2004 John Darrington + + * examine.q factor_stats.[ch] Changed stderr to se_mean to avoid + conflict with stdio. + +Sun Nov 21 10:32:41 WST 2004 John Darrington + + * var-labs.c (var_to_string) Now returns null if the variable is null + + * value-labels.c (value_to_string) Made it return null if either the + value or the variable is null. + + * hash.c (hsh_clear) Fixed a buglet. + + * examine.q factor_stats.[ch] Largely rewrote, because I'd started + with the wrong model. + + * casefile.[ch] Added a function to return the casereader.case_idx + member + + * examine.q Implemented the extreme values results. + +John Darrington + + * settings.h set.c glob.[ch] frequencies.q q2c.c error.c lexer.[ch] + output.[ch] getline.c + + Plugged some memory leaks + +Mon Nov 15 23:47:40 2004 Ben Pfaff + + Adopt GSL random number generators, paving the way for providing + the complete suite of random number generators on expressions. + + * Makefile.am: Remove random.c, random.h. + + * random.c: Removed. + + * random.h: Removed. + + * algorithm.c: (algo_default_random) Use GSL functions. + + * casefile.c: (test_casefile) Use GSL RNG functions. + + * expr-evl.c: (expr_evaluate) Use GSL RNG functions for OP_NORMAL, + OP_UNIFORM. + + * sample.c: (cmd_sample) Use GSL RNG functions. + (sample_trns_proc) Ditto. + + * set.q: (static var set_seed) Removed. + (static var seed_flag) Removed. + (static var rng) New variable. + (aux_stc_custom_seed) No seed value anymore, don't print anything. + (stc_custom_seed) Use new seed functions. + (seed_is_set) Removed. + (get_rng) New function that composes the entire external + interface. + (set_rng) New function. + (random_seed) New function. + +Mon Nov 15 22:08:25 2004 Ben Pfaff + + * expr-evl.c: (expr_evaluate) Fix XDATE.JDAY formula. Thanks to + John Darrington for reporting this + bug. + +Tue Nov 16 13:19:18 WST 2004 John Darrington + + * permissions.c command.def Added the PERMISSIONS command + +>>>>>>> 1.110 +Mon Nov 15 01:33:32 2004 Ben Pfaff + + * q2c.c: (dump_header) Don't try to emit #includes at very top of + output file because that will precede #include , which + is bad. + (main) Add needed headers to /* (header) */ code. + +Mon Nov 15 01:21:36 2004 Ben Pfaff + + Instead of making system or portable file readers responsible for + dropping and reordering variables, make them read full cases and + let the caller take care of any changes. + + * get.c: New "case map" structure to handle this. Use for GET, + IMPORT, MATCH FILES. Essentially rewrite the whole file. + + * pfm-read.c: (pfm_read_case) Read into provided case. Signature + changed appropriately. + + * sfm-read.c: (sfm_read_case) Ditto. + +Mon Nov 15 00:47:45 2004 Ben Pfaff + + Decided that case_serialize() and case_unserialize() were too + abstract. Also we need a couple more functions to avoid excessive + copying for data in/out fast paths. + + * case.c: (case_serial_size) Removed. + (case_serialize) Rename case_to_values() and make its argument + explicitly an array of union values. + (case_unserialize) Rename case_from_values() and make its argument + explicitly an array of union values. + (case_data_all) New function. + (case_data_all_rw) New function. + + * casefile.c: (struct casefile) Change buffer from array of + unsigned char to array of union value for better accuracy. + Redefine buffer_used and buffer_size in terms of values, not + bytes. Remove case_size because it is now redundant with + value_cnt. Fix up all references to these members. + +Mon Nov 15 00:45:46 2004 Ben Pfaff + + * barchart.c: (struct subcat) Make `label' member const to silence + GCC warning with -Wwrite-strings. + + * cartesian.c: (struct dataset) Ditto. + + * case.c: Don't re-define NDEBUG if already defined. + Add lots of comments. + + * str.c: Fix includes. + + * crosstabs.q: Fix includes. + + * examine.q: Fix includes. Fix GCC warning about unused + variables. + + * frequencies.q: (stat macro) Removed and replaced where used by + its expansion. + + * list.q: Fix includes. + + * oneway.q: Fix includes. + + * piechart.c: Fix includes. Only define M_PI if not already + defined. + + * sfm-read.c: (bswap) New function. + (bswap_int32) Write in terms of bswap. + (bswap_flt64) Ditto. + + * str.c: (ds_data) Add external definition here, needed because + str.h has only an `extern inline' version. + + * value-labels.c: Fix includes. + +Mon Nov 15 00:40:55 2004 Ben Pfaff + + Instead of providing a system or portable file writer with a raw + case in the format needed for output, provide it with a regular + case. The writer takes care of any needed translation. + + * aggregate.c: Adopt new scheme for AGGREGATE. + (struct agr_proc) sfm_agr_case member removed. + (write_case_to_sfm) Removed because the new interface is easier to + use. + + * get.c: Adopt new scheme for SAVE, XSAVE, EXPORT. + + * pfm-write.c: Implement new scheme. + + * sfm-write.c: Ditto. + +Mon Nov 15 00:32:24 2004 Ben Pfaff + + Instead of treating `struct file_handle' as a class to subclass + into data files, system files, and portable files, instead use it + as a helper that coordinates access. Now it is opaque, too. + + This means that most references to a struct file_handle are now + changed into references to one of struct dfm_reader, struct + dfm_writer, struct sfm_reader, struct sfm_writer, struct + pfm_reader, or struct pfm_writer, according to what's being read + or written. + + Most related changes are only worth summarizing briefly. + + * dictionary.c: (dict_clear) Destroy aux data in deleted + variables. + (dict_clear_aux) New function. + (dict_create_var) Initialize aux, aux_dtor. + (dict_delete_var) Destroy aux data in deleted variable. + + * file-handle.h: (struct fh_ext_class) Removed. + (struct file_handle) Removed. + (fh_init_files) Removed. + + * file-handle.q: Changed references to a handle's `private' member + to direct references. + (struct private_file_handle) Renamed file_handle. + Add next, open_cnt, type, open_mode, aux members. + (struct file_handle_list) Removed. + (extern var inline_file) Removed. + (static var file_handles) Changed from file_handle_list * to + file_handle *. + (create_file_handle) Initialize new members. + (fh_close_handle) Removed. + (mode_name) New function. + (fh_open) New function. + (fh_close) New function. + (fh_parse_file_handle) Renamed fh_parse(). + + * glob.c: (init_glob) Remove fh_init_files() call. + + * aggregate.c: use sfm_writer. + (create_sysfile) Removed because the new interface is simpler. + + * apply-dict.c: Use sfm_reader. + + * data-list.c: Use dfm_reader. + + * file-type.c: Use dfm_reader. + + * get.c: Use sfm_reader, sfm_writer, pfm_reader, pfm_writer. + + * inpt-pgm.c: Use dfm_reader. + + * print.c: Use dfm_writer. + + * sysfile-info: Use sfm_reader. + + * dfm-read.c: Adopt new file handle infrastructure. + + * dfm-write.c: Ditto. + + * pfm-read.c: Ditto. + + * pfm-write.c: Ditto. + + * sfm-read.c: Ditto. + + * sfm-write.c: Ditto. + +Mon Nov 15 00:31:44 2004 Ben Pfaff + + Break dictionary functions into separate header file. + + * dictionary.h: New file. + + * var.h: Moved dict_*() functions to dictionary.h. + +Mon Nov 15 00:30:33 2004 Ben Pfaff + + Get rid of procedure-specific union in struct variable, using + instead a void * pointer and a destructor function. + + Most related changes are only worth brief summaries. + + * crosstabs.q: Fix includes. Use new struct var_range in lieu of + old p.crs member in struct variable. + + * frequencies.q: Fix includes. Use new struct var_freqs in lieu + of old p.frq member in struct variable. + + * histogram.c: (draw_histogram) Takes new freq_tab arg because + it's no longer possible to grab this from var->p.frq. + + * piechart.c: (draw_piechart) Ditto. + + * group.c: (group_proc_get) New function. + + * levene.c: Use group_proc_get() in lieu of old p.grp_data member + in struct variable. + + * oneway.q: Ditto. + + * t-test.q: Ditto. + + * main.c: (execute_command) Clear aux data in default_dict after + each command. (It's debatable whether this should be done.) + + * matrix-data.c: Use new struct mxd_var in lieu of old p.mxd + member in struct variable. + + * means.q: Get rid of integer mode, which is not included in + recent SPSS and was the only code that wanted per-variable private + data. + + * var.h: (struct crosstab_proc) Removed. + (struct frequencies_proc) Removed. + (struct list_proc) Removed. + (struct get_proc) Removed. + (struct means_proc) Removed. + (struct matrix_data_proc) Removed. + (struct match_files_proc) Removed. + (lots of enums) Removed. + (struct variable) Removed members `p', `get'. Add member + `aux_dtor'. + + * vars-atr.c: (var_attach_aux) New function. + (var_detach_aux) New function. + (var_clear_aux) New function. + (var_dtor_free) New function. + (discard_variables) Use NULL instead of inline_file. + +>>>>>>> 1.106 +Fri Nov 12 10:07:11 WST 2004 John Darrington + + * value-labs.c Fixed the implmentation of value_to_string, so + that it properly handles alpha values. + + * oneway.q Changed instances where labels were being probed manually, + to use the canonical {var,value}_to_string functions + +Thu Nov 11 21:01:31 WST 2004 John Darrington + + * examine.q cartesian.c chart.[ch] Added normal and detrended normal + plots. Changed the API of the cartesian plot to be a much lower level + thing. + +Sun Nov 7 17:25:04 WST 2004 John Darrington + + * examine.q Added some of the parametric calculations + + * factor_stats.[ch] Created + +Sat Nov 6 21:24:31 WST 2004 John Darrington + + * examine.q Changed the definition of factors to be a composite, and + dealt with the consequences. + +Sat Nov 6 20:40:38 WST 2004 John Darrington + + * examine.q Fixed problem where examine wasn't dealing properly with + splits + +Sat Nov 6 14:49:47 WST 2004 John Darrington + + * oneway.q Fixed problem where oneway wasn't dealing properly with + splits + +Thu Nov 4 11:09:01 WST 2004 John Darrington + + * q2c.c examine.q Fixed a bug (feature?) whereby arrays in the + command which had settings didn't get the appropriate code + generated. + + * val.h value-labels.[ch] var-labs.c Added v*to_string functions + to convert variables/values to strings. + + * examine.q Added framework for the EXAMINE command. + +Mon Nov 1 12:46:17 WST 2004 John Darrington + + * q2c.c frequencies.q set.q t-test.q Fixed the q2c parsing of DBL + subcommand types. Changed frequencies.q to use it rather then the + custom parser. Dealt with the consequences. Added a test for NTILES + subcommand of frequencies. + +Sat Oct 30 09:16:29 WST 2004 John Darrington + + * oneway.q Fixed up the behaviour when given missing values + + * levene.c oneway.q Fixed a buglet with the levene statistic and + incorporated the levene test into the oneway command. + + * group.h t-test.q Moved the CMP_EQ and CMP_LE symbols out of + global scope, since they're only relevant to T-TEST + +Fri Oct 29 17:39:03 WST 2004 John Darrington + + * group.c group.h group_proc.h levene.c oneway.q t-test.q + + Made the t-test more consistent + with the way it handles groups. That is, it now uses a hash instead + of an array of 2. Also, made the levene.c file independent of the + implementation of the t-test. So now levene should be fine for both + t-test and anova. + + * Added an oneway.q file for one way anova + +Wed Jun 2 22:08:02 2004 Ben Pfaff + + * descript.c: (cmd_descriptives) Remove harmless but bogus test in + STATISTICS parsing. + +Mon May 31 20:45:24 2004 Ben Pfaff + + Fix memory leaks. + + * data-list.c: (cmd_data_list) Free dls->delims on lossage. + (data_list_trns_free) Free dls->delims. + + * t-test.q: (tts_custom_pairs) Free vars. + (ssbox_one_sample_init) Fix tab_vline() argument. + (ssbox_independent_samples_init) Ditto. + (trbox_paired_init) Ditto. + (trbox_one_sample_init) Ditto. + +Mon May 31 17:19:27 2004 Ben Pfaff + + Generalize casefiles to the extent that we can use them for + sorting and other kinds of data transformations. Change cases to + be copy-on-write to improve memory efficiency in common cases. + Every access to a member of a `struct ccase' was changed to be a + call to a case_*() function, especially case_data(), case_num(), + case_str(), or case_data_rw(). Many instances of a local variable + named "case_num" were changed to "case_idx" as a consequence. + Many `struct ccase *' were changed to actual `struct ccase' + because of copying semantics of cases. In several places there + was a choice between updating debug code to work with the new ADTs + or just deleting it because it was useless; I chose to delete it. + + * Makefile.am: (pspp_SOURCES) Add case.c, case.h. + + * case.c: New file. + + * case.h: New file. + + * aggregate.c: (struct agr_proc) Change type of `sort' to + sort_criteria *. Add `break_vars', `break_var_cnt' members. + Rename `vars' to `agr_vars', all references updated. Change + `agr_case' to type `struct ccase'. + (cmd_aggregate) Deal with new members. Use case_create(), + sort_active_file_in_place(), sort_active_file_to_casefile(). + (agr_destroy) Deal with new members. + (aggregate_single_case) Ditto. + (dump_aggregate_info) Ditto. + (initialize_aggregate_info) Ditto. + (agr_to_active_file) Ditto. + (presorted_agr_to_sysfile) Ditto. + (sort_agr_to_sysfile) Removed. + + * alloc.c: (out_of_memory) Make non-static. + + * alloc.h: Prototype out_of_memory(). + + * casefile.c: Switched from a linked list in-memory representation + to a two-level array-style representation. The linked list was + appropriate when we could stick a header onto cases, but that's no + longer the case. Also, the two-level array will allow for random + in-memory access in case that's ever wanted. Also added the + concept of a `destructive casereader', one that destroys cases in + the underlying casefile as they are read out. + (macro CASES_PER_BLOCK) New macro. + (struct casefile) New members `value_cnt', `case_list_size', + `case_acct_size', `being_destroyed', `cases'. Removed `head', + `tail'. + (struct casereader) Removed `cur'. Added `destructive', `c'. + (global var casefiles) Made static. + (static var case_bytes) New var. + (casefile_create) Takes a value count, not a case size in bytes, + to conform to the case interface. All callers updated. Deal with + new and removed members. + (casefile_destroy) Deal with new and removed members. + (casefile_sleep) New function. + (casefile_get_case_size) Removed. + (casefile_get_value_cnt) New function. + (casefile_append) Rewritten to deal with new and removed members. + (casefile_append_xfer) New function. + (write_case_to_disk) Use case_serialize(). + (call_posix_fadvise) Removed because posix_fadvise64 segfaults. + Couldn't figure out why. + (casefile_to_disk) Don't call call_posix_fadvise. Rewritten to + deal with new and removed members. + (merge) Removed. + (merge_sort) Removed. + (casefile_sort) Removed. + (casefile_get_reader) Deal with new and removed members. + (casefile_get_destructive_reader) New function. + (reader_open_file) Make code more readable. Create case for + reader. + (casereader_get_casefile) New function. + (casereader_read) Deal with new and removed members. Now returns + a copy of the case, so that the caller is responsible for + destroying the returned case. + (casereader_read_xfer) New function. + (casereader_destroy) Destroy reader's case. + (test_casefile) Second arg is now a value count, all callers + updated. Now tests destructive readers too. + (get_random_case) Deal with new case ADT. + (write_random_case) Ditto. + (read_and_verify_random_case) Ditto. + + * crosstabs.q: Remove debug code. + + * descript.q: (calc_descriptives) Deal with new case, casefile + ADTs. + + * dfm.c: (cmd_begin_data) There's no storage_source_class anymore. + + * do-if.c: Remove unneeded header inclusion. + + * expr-prs.c: Remove debug code. + + * exprP.h: Remove debug code. + + * flip.c: (flip_file) Use fseeko() if available. + + * formats.c: Remove debug code. + + * get.c: Remove debug code. + (struct mtf_file) Change `input' from `union value *' to `struct + ccase', all references updated. + + * levene.c: (levene) Deal with new case, casefile ADTs. + + * list.q: Remove debug code. + + * loop.c: Remove debug code. + + * matrix-data.c: Remove debug code. + + * means.q: Remove debug code. + + * mis-val.c: Remove debug code. + + * pfm-read.c: Remove debug code. + (pfm_read_code) Change second arg from `union value *' to `struct + ccase *', all references updated. + + * recode.c: (string_to_long) Make first arg const. + (convert_to_double) Ditto. + + * repeat.c: Remove debug code. + + * sample.c: Remove debug code. + + * sfm-read.c: Remove debug code. + (sfm_read_case) Change second arg from `union value *' to `struct + ccase *'. + + * sort.c: Redone in terms of casefiles. + (enum sort_direction) Moved here from sort.h. + (struct sort_criterion) New structure. + (struct sort_criteria) New structure. + (cmd_sort_cases) Rewritten. + (prepare_to_sort_active_file) New function. + (sort_active_file_in_place) New function. + (sort_active_file_to_casefile) New function. + (parse_sort) Renamed sort_parse_criteria(), rewritten & interface + changed, all callers updated. + (destroy_sort_cases_pgm) Renamed sort_destroy_criteria(), + rewritten & interface changed, all callers updated. + (sort_cases) Renamed sort_execute(), rewritten & interface + changed, all callers updated. + (struct internal_sort) Removed. + (do_internal_sort) Rewritten, interface changed. + (destroy_internal_sort) Removed. + (compare_case_dblptrs) Use sort_criteria instead of sort_case_pgm. + (struct initial_run) Removed; an initial run is now just a + casefile. + (compare_initial_runs) Rewritten. + (struct external_sort) Changed almost completely. + (do_external_sort) Rewritten, interface changed. + (destroy_external_sort) Rewritten. + [HAVE_MKDTEMP] (make_temp_dir) Removed. + [!HAVE_MKDTEMP] (do_mkdir) Removed. + [!HAVE_MKDTEMP] (make_temp_dir) Removed. + (init_external_sort) Removed. + (simulate_error) Removed. + (rmdir_temp_dir) Removed. + (get_temp_file_name) Removed. + (open_temp_file) Removed. + (close_temp_file) Removed. + (remove_temp_file) Removed. + (write_temp_file) Removed. + (read_temp_file) Removed. + (struct record_run) Change `record' from `struct case_lit *' to + `struct ccase'. + (struct initial_run_state) Remove `idx_to_fv', `free_list', + `file_idx', `output_file'. Add `run', casefile'. Change + `last_output' from `struct case_list *' to `struct ccase'. + (write_initial_runs) Change interface, rewrite. + (sort_sink_write) Renamed process_case(), changed interfaced, + rewrote. + (destroy_initial_run_state) Rewritten. + (allocate_cases) Rewritten. + (compare_record) Interface changed, rewritten. + (start_run) Rewritten. + (end_run) Rewritten. + (output_record) Rewritten. + (grab_case) Removed. + (release_case) Removed. + (struct merge_case) Change `cases' from double pointer to single + pointer. + (merge) Deal with new case and casefile ADTs. + (struct run) Removed. + (merge_once) Rewritten, interface changed. + (fill_run_buffer) Removed. + (sort_sink_make_source) Removed. + (sort_sink_class) Removed. + (struct sort_source_aux) Removed. + (sort_source_read_helper) Removed. + (sort_source_read) Removed. + (read_sort_output) Removed. + (read_internal_sort_output) Removed. + (read_external_sort_output) Removed. + (sort_source_destroy) Removed. + (sort_source_class) Removed. + + * sort.h: (struct sort_cases_pgm) Removed. + (enum sort_direction) Moved to sort.c. + + * t-test.q: (calculate) Deal with new case, casefile ADTs. + + * tab.c: Remove debug code. + + * var-labs.c: Remove debug code. + + * var.h: (struct ccase) Removed. + (struct case_list) Removed. + + * vars-atr.c: (discard_variables) Use free_case_source(). + + * vars-prs.c: (parse_vs_variable) Make arg const. + (parse_dict_variable) Ditto. + (parse_variables) Make struct dictionary * arg const. + (parse_var_set_vars) Make struct var_set * arg const. + (struct var_set) Add const to some of the function pointers' args. + (var_set_get_cnt) Make arg const. + (var_set_get_var) Make first arg const. + (var_set_lookup_var) Make first arg const. + (dict_var_set_get_cnt) Make arg const. + (dict_var_set_get_var) Make first arg const. + (dict_var_set_lookup_var) Make first arg const. + (var_set_create_from_dict) Make arg const. Add cast to aux + assignment. + (struct array_var_set) Add const to var member. + (array_var_set_get_cnt) Make arg const. + (array_var_set_get_var) Make first arg const. + (array_var_set_lookup_var) Make first arg const. + (var_set_create_from_array) Make first arg const. Insert cast. + + * vfm.c: (struct write_case_data) Change trns_case, sink_case + members from `struct ccase *' to `struct ccase'. + (static var lag_queue) Change from double to single pointer. + (procedure) Optimize trivial case. + (internal_procedure) Deal with changed case, case_source ADTs. + (create_trns_case) Changed interface, rewrote. + (open_active_interface) Initialize modified lag queue. + (write_case) Deal with changed case ADT. + (lag_case) Deal with modified lag queue. + (close_active_file) Destroy modified lag queue. + Deal with changed case_source, case_sink ADTs. + (destroy_storage_stream_info) Make null arg into no-op. + (storage_sink_make_source) Set aux in created source. + (storage_source_read) Deal with changed case, casefile ADTs. + (storage_source_create) New function. + (lagged_case) Rewrite. + (free_case_source) New function. + (free_case_sink) Rewrite. + (struct split_aux_data) Changed prev_case from `struct ccase *' to + `struct ccase'. + (procedure_with_splits) Deal with changed prev_case. + (procedure_with_splits_callback) Ditto. + (multipass_split_aux_data) Changed prev_case from `struct ccase *' to + `struct ccase'. + (multipass_procedure_with_splits) Deal with changed prev_case. + (multipass_split_callback) Ditto. + + +Mon May 31 17:19:06 2004 Ben Pfaff + + The workspace idea didn't work out. + + * Makefile.am: (pspp_SOURCES) Remove workspace.c, workspace.h. + + * workspace.c: Removed. + + * workspace.h: Removed. + Sun May 30 18:35:19 2004 Ben Pfaff Fully implement arbitrary delimiters on DATA LIST, extending the