One comment I can make is that the first method is easily changed to support the multiplication of two separate values, while the firstsecond isn't:
static int SquareMultiple(int val1, int val2)
{
int newVal = 0;
if (val1 >= 0 && val2 >= 0 || val1 < 0 && val2 < 0)
{
val1 = Math.Abs(val1);
val2 = Math.Abs(val2);
for (int i = 0; i < val2; i++)
{
newVal += val1;
}
}
else
{
if (val1 < val2)
{
int ttmp = val1;
val1 = val2;
val2 = t;tmp;
}
for (int i = val2; i < 0; i++)
{
newVal -= val1;
}
}
return newVal;
}
The first relies on a special algorithm to calculate squares.