function sin_a(u) result(o) type(ad_t),intent(in)::u type(ad_t)::o o = ad_t( sin(u%val()) , cos(u%val())*u%grad() ) end function sin_a