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