Hi All I was able to get seqprep to pass the tests on i386 by replacing all instances of the 'float' datatype in SeqPrep.c with 'double'. See attached patch.
Would it be reasonable to apply this patch to all architectures? Regards Graham
--- a/SeqPrep.c +++ b/SeqPrep.c @@ -150,12 +150,12 @@ int min_ol_adapter = DEF_OL2MERGE_ADAPTER; int min_ol_reads = DEF_OL2MERGE_READS; unsigned short int min_read_len =DEF_MIN_READ_LEN; - float min_match_adapter_frac = DEF_MIN_MATCH_ADAPTER; - float min_match_reads_frac = DEF_MIN_MATCH_READS; - float max_mismatch_adapter_frac = DEF_MAX_MISMATCH_ADAPTER; - float max_mismatch_reads_frac = DEF_MAX_MISMATCH_READS; + double min_match_adapter_frac = DEF_MIN_MATCH_ADAPTER; + double min_match_reads_frac = DEF_MIN_MATCH_READS; + double max_mismatch_adapter_frac = DEF_MAX_MISMATCH_ADAPTER; + double max_mismatch_reads_frac = DEF_MAX_MISMATCH_READS; - float read_frac_thresh = DEF_READ_GAP_FRAC_CUTOFF; + double read_frac_thresh = DEF_READ_GAP_FRAC_CUTOFF; unsigned short max_mismatch_adapter[MAX_SEQ_LEN+1]; unsigned short max_mismatch_reads[MAX_SEQ_LEN+1]; unsigned short min_match_adapter[MAX_SEQ_LEN+1]; @@ -316,10 +316,10 @@ //Calculate table matching overlap length to min matches and max mismatches for(i=0;i<MAX_SEQ_LEN+1;i++){ - max_mismatch_reads[i] = floor(((float)i)*max_mismatch_reads_frac); - max_mismatch_adapter[i] = floor(((float)i)*max_mismatch_adapter_frac); - min_match_reads[i] = ceil(((float)i)*min_match_reads_frac); - min_match_adapter[i] = ceil(((float)i)*min_match_adapter_frac); + max_mismatch_reads[i] = floor(((double)i)*max_mismatch_reads_frac); + max_mismatch_adapter[i] = floor(((double)i)*max_mismatch_adapter_frac); + min_match_reads[i] = ceil(((double)i)*min_match_reads_frac); + min_match_adapter[i] = ceil(((double)i)*min_match_adapter_frac); } //get length of forward and reverse primers int forward_primer_len = strlen(forward_primer);