@@ -91,60 +91,73 @@ function SCMC_cadd_kernel(OUT::String, v1::String, CONST::Real, varlist::Vector{
9191 buffer = Base.IOBuffer()
9292
9393 # Write all the lines to the buffer
94- write(buffer, " ############################\n")
95- write(buffer, " ## Addition of a constant ##\n")
96- write(buffer, " ############################\n")
97- write(buffer, "\n")
98- write(buffer, " # Reset the column counter\n")
99- write(buffer, " col = Int32(1)\n")
100- write(buffer, "\n")
101- write(buffer, " # Begin rule\n")
102- write(buffer, " $OUT_lo $eq $v1_lo + $CONST\n")
103- write(buffer, " $OUT_hi $eq $v1_hi + $CONST\n")
104- write(buffer, " $OUT_cv $eq $v1_cv + $CONST\n")
105- write(buffer, " $OUT_cc $eq $v1_cc + $CONST\n")
106- write(buffer, " while col <= colmax\n")
107- if sparsity_case == 1
108- write(buffer, " if $sparsity_string\n")
109- write(buffer, " $(OUT_cvgrad)col] = $v1_cvgrad\n")
110- write(buffer, " $(OUT_ccgrad)col] = $v1_ccgrad\n")
111- write(buffer, " else\n")
94+ if OUT != v1
95+ write(buffer, " ############################\n")
96+ write(buffer, " ## Addition of a constant ##\n")
97+ write(buffer, " ############################\n")
98+ write(buffer, "\n")
99+ write(buffer, " # Reset the column counter\n")
100+ write(buffer, " col = Int32(1)\n")
101+ write(buffer, "\n")
102+ write(buffer, " # Begin rule\n")
103+ write(buffer, " $OUT_lo $eq $v1_lo + $CONST\n")
104+ write(buffer, " $OUT_hi $eq $v1_hi + $CONST\n")
105+ write(buffer, " $OUT_cv $eq $v1_cv + $CONST\n")
106+ write(buffer, " $OUT_cc $eq $v1_cc + $CONST\n")
107+ write(buffer, " while col <= colmax\n")
108+ if sparsity_case == 1
109+ write(buffer, " if $sparsity_string\n")
110+ write(buffer, " $(OUT_cvgrad)col] = $v1_cvgrad\n")
111+ write(buffer, " $(OUT_ccgrad)col] = $v1_ccgrad\n")
112+ write(buffer, " else\n")
113+ write(buffer, " $(OUT_cvgrad)col] = 0.0\n")
114+ write(buffer, " $(OUT_ccgrad)col] = 0.0\n")
115+ write(buffer, " end\n")
116+ elseif sparsity_case == 2
117+ write(buffer, " if $antisparsity_string\n")
118+ write(buffer, " $(OUT_cvgrad)col] = 0.0\n")
119+ write(buffer, " $(OUT_ccgrad)col] = 0.0\n")
120+ write(buffer, " else\n")
121+ write(buffer, " $(OUT_cvgrad)col] = $v1_cvgrad\n")
122+ write(buffer, " $(OUT_ccgrad)col] = $v1_ccgrad\n")
123+ write(buffer, " end\n")
124+ else
125+ write(buffer, " $(OUT_cvgrad)col] = $v1_cvgrad\n")
126+ write(buffer, " $(OUT_ccgrad)col] = $v1_ccgrad\n")
127+ end
128+ write(buffer, " col += Int32(1)\n")
129+ write(buffer, " end\n")
130+ write(buffer, "\n")
131+ write(buffer, " # Cut\n")
132+ write(buffer, " if $OUT_cv < $OUT_lo\n")
133+ write(buffer, " $OUT_cv = $OUT_lo\n")
134+ write(buffer, " col = Int32(1)\n")
135+ write(buffer, " while col <= colmax\n")
112136 write(buffer, " $(OUT_cvgrad)col] = 0.0\n")
113- write(buffer, " $(OUT_ccgrad) col] = 0.0 \n")
137+ write(buffer, " col += Int32(1) \n")
114138 write(buffer, " end\n")
115- elseif sparsity_case == 2
116- write(buffer, " if $antisparsity_string\n")
117- write(buffer, " $(OUT_cvgrad)col] = 0.0\n")
139+ write(buffer, " end\n")
140+ write(buffer, " if $OUT_cc > $OUT_hi\n")
141+ write(buffer, " $OUT_cc = $OUT_hi\n")
142+ write(buffer, " col = Int32(1)\n")
143+ write(buffer, " while col <= colmax\n")
118144 write(buffer, " $(OUT_ccgrad)col] = 0.0\n")
119- write(buffer, " else\n")
120- write(buffer, " $(OUT_cvgrad)col] = $v1_cvgrad\n")
121- write(buffer, " $(OUT_ccgrad)col] = $v1_ccgrad\n")
145+ write(buffer, " col += Int32(1)\n")
122146 write(buffer, " end\n")
147+ write(buffer, " end\n")
148+ write(buffer, "\n")
123149 else
124- write(buffer, " $(OUT_cvgrad)col] = $v1_cvgrad\n")
125- write(buffer, " $(OUT_ccgrad)col] = $v1_ccgrad\n")
150+ write(buffer, " ############################\n")
151+ write(buffer, " ## Addition of a constant ##\n")
152+ write(buffer, " ############################\n")
153+ write(buffer, "\n")
154+ write(buffer, " # Begin rule\n")
155+ write(buffer, " $OUT_lo += $CONST\n")
156+ write(buffer, " $OUT_hi += $CONST\n")
157+ write(buffer, " $OUT_cv += $CONST\n")
158+ write(buffer, " $OUT_cc += $CONST\n")
159+ write(buffer, "\n")
126160 end
127- write(buffer, " col += Int32(1)\n")
128- write(buffer, " end\n")
129- write(buffer, "\n")
130- write(buffer, " # Cut\n")
131- write(buffer, " if $OUT_cv < $OUT_lo\n")
132- write(buffer, " $OUT_cv = $OUT_lo\n")
133- write(buffer, " col = Int32(1)\n")
134- write(buffer, " while col <= colmax\n")
135- write(buffer, " $(OUT_cvgrad)col] = 0.0\n")
136- write(buffer, " col += Int32(1)\n")
137- write(buffer, " end\n")
138- write(buffer, " end\n")
139- write(buffer, " if $OUT_cc > $OUT_hi\n")
140- write(buffer, " $OUT_cc = $OUT_hi\n")
141- write(buffer, " col = Int32(1)\n")
142- write(buffer, " while col <= colmax\n")
143- write(buffer, " $(OUT_ccgrad)col] = 0.0\n")
144- write(buffer, " col += Int32(1)\n")
145- write(buffer, " end\n")
146- write(buffer, " end\n")
147- write(buffer, "\n")
148161 return String(take!(buffer))
149162end
150163
0 commit comments